线性表(链表):

#include<iostream>
using namespace std;struct Node {int data;Node* next;
};class LinkList{
private:Node* first;int length;
public:LinkList();~LinkList();int getLength();int getElem(int index);int indexElem(int data);int deleteElem(int index);void insertElem(int index,int data);bool isEmpty();void printAllElem();void inilist(int a[], int n);
};LinkList::LinkList() {first = new Node;first->next = NULL;length = 0;
}LinkList::~LinkList() {Node* p;while (first != NULL) {p = first;first = first->next;delete p;}
}int LinkList::getLength() {return length;
}int LinkList::getElem(int index) {if (index<1 || index>length) throw"查找位置错误";Node* p = first;int i= 0;while (p!=NULL){p = p->next;i++;if (i == index) {cout << "你查找的第"<<index<<"个元素为" << p->data << endl;return p->data;}}return -1;
}int LinkList::indexElem(int data) {int count = 0;Node* p = first;while (p!=NULL){p = p->next;count++;if (p->data == data) {cout << "该元素在表的元素位置为:" << count << endl;return count;}}cout << "未找到该元素" << endl;return -1;
}int LinkList::deleteElem(int index) {if (index<1 || index>length) throw"位置错误";Node* p = first;Node* q;int x;int count = 0;while (p != NULL && count < index - 1){p = p->next;count++;}if (p == NULL || p->next == NULL) throw"删除失败";else {q = p->next;x = q->data;p->next = q->next;delete q;length--;return x;}}void LinkList::insertElem(int index, int data) {Node* p=first;Node* s;int count = 0;while (p!=NULL&&count<index-1){p = p->next;count++;}if (p == NULL) throw "插入位置错误";else {s = new Node;s->data = data;s->next = p->next;p->next = s;length++;}
}bool LinkList::isEmpty() {return length == 0;
}void  LinkList::printAllElem() {Node* p = first->next;while (p!=NULL){cout << p->data << "\t";p = p->next;}cout << endl;
}void LinkList::inilist(int a[], int n) {length = 0;first = new Node;//申请头结点 first->next = NULL;//指针域为NULLNode* end = first;for (int i = 0; i < n; i++) {Node* s = new Node;s->data = a[i];s->next = NULL;end->next = s;end = end->next;length++;}
}int main()
{//实现的功能如下: //构造函数--定义头结点,链表长度为0                   //析构函数--释放所有结点空间                 //构造函数(含参)--W把数组和n值传入给链表               //获取链表的长度--L        //按位查找,第i个元素--G(i) //按值查找,返回位--C(x) //插入操作--I(i,x) //删除操作,删除第--D(i) //判断是否为空--E //遍历操作,依次输出--P//输入Q,退出程序 LinkList list;char command;int i, x;try {cout << "建议先按W完成初始化:" << endl;while (cin >> command){if (command == 'Q')return 0;switch (command){case 'W':cout << "输入5个元素值:" << endl;int a[5];//默认一开始有三个数 for (int i = 0; i < 5; i++)cin >> a[i];list.inilist(a, 5);cout << "新建完成。" << endl;break;case 'L':cout << "表长为:" << list.getLength() << endl;break;case 'G':cout << "请输入你要查找的元素位置:";cin >> i;cout << "你找的元素是:" << list.getElem(i) << endl;break;case 'C':cout << "输入你要查找的值:";cin >> x;cout << "他在第" << list.indexElem(x) << "位置处" << endl;break;case 'I':cout << "输入你要插入的位置和元素:";cin >> i >> x;list.insertElem(i, x);cout << "插入完成" << endl;break;case 'D':cout << "输入你要删除的元素位置:";cin >> i;cout << "元素:" << list.deleteElem(i) << "已删除" << endl;break;case 'E':cout << (list.isEmpty() ? "yes" : "no") << endl;break;case 'P':list.printAllElem();break;}}}catch (const char* str){cout << str;}return 0;}

代码又散  全是配置文件 算了不上传了


学习数据结构

节日快乐 2022-10-24 00:28:43

努力打卡 每天学习 不浪费每一天 Day71相关推荐

  1. 努力打卡 每天学习 不浪费每一天 Day42

    哎 明天就开学了 今天刷了一下午的校内题 基本都是巩固Java语法的 这里就不发了 有感而发,回忆从csdn下定决心打开的第一天 到今天已经是42天了 但是也不是暑假都在学 还有很长时间在练车,看了近 ...

  2. 努力打卡 每天学习 不浪费每一天 Day17

    Collection集合存储自定义类型的对象 常见数据结构(浅识): ●栈 ●队列 ●数组 ●链表●二叉树●二叉查找树平●衡二叉树●红黑树 等等 ●栈 ●队列 ●数组 ●链表 ●二叉树 ●平衡二叉树 ...

  3. 努力打卡 每天学习 不浪费每一天 Day67

    String name = "zhangsan";String pwd = "fsfafs";String sql = "select * from ...

  4. 努力打卡 每天学习 不浪费每一天 Day55

    晚上学会数据库 明天把项目完成! 展示数据库 show databases; 创建数据库 create database db1; create database if not exists db1; ...

  5. 努力打卡 每天学习 不浪费每一天 Day44

    DatagramPacket 数据包对象 DatagramSocket:发送端和接收端对象 DatagramSocket类成员方法 广播.组播 public static void main(Stri ...

  6. 努力打卡 每天学习 不浪费每一天 Day69

    MyBatis 又是搭配环境的一天......  因为代码挺多的 而且我也没有太理解 先不上传代码了 因为之前是用java学的数据结构 发现期末卷子都是c++的填空啥的 准备每天晚上重新用c++学一遍

  7. 努力打卡 每天学习 不浪费每一天 Day38

    Java GUI 设置大小 设置菜单 添加图片 打乱图片  监听事件 鼠标 键盘 动作 public class GameJFrame extends JFrame {public GameJFram ...

  8. stm32 SD(SDSC)卡的学习SDIO 模式连接SD卡

    本次的SD卡连接使用的是SDIO模式与之前的SPI模式相对应,都是对stm32 使用SD卡的介绍也为了和后面的FATFS文件系统使用铺垫.就直接上源码,也有看不明白的抢先看上一节的stm32 SD(S ...

  9. 你天天努力的碎片化学习,为什么还在每天挤地铁?

    ​ 我的一个朋友一天是这样度过的: 叮咚--早晨闹钟响起.他眼一睁,立马抓过手机,打开"得到"看5个专栏的内容.地铁上,听着喜马拉雅的音频节目. 中午吃饭与午休的时间,他又点开了& ...

最新文章

  1. TensorFlow1.8.0正式发布,Bug修复和改进内容都在这里了
  2. 第十、十一周项目五 - 摩托车继承自行车和机动车
  3. SpringMVC之context-dispatcher.xml,了解基本的控制器
  4. 转:MFC中创建多线程
  5. vba二维数组初始化_将工作表数据写入VBA数组
  6. Gson 字符串与对象相互转换工具类
  7. 洛谷 - P1714 切蛋糕(单调队列+前缀和+思维)
  8. LeetCode283——Move Zeroes(将0移动到数组最后面)
  9. python 查看当前目录_Python学习第156课--ls的运用、环境变量以及PATH
  10. 矩形嵌套(NYOJ-16)
  11. data:image/png;base64
  12. java默认virtual_mac jdk配置(系统默认or自己配置)
  13. FireFox的插件范例,竟然有问题
  14. 微信小程序上传图片到服务器总是失败_微信小程序上传图片到服务器实例
  15. 关于英语写作和阅读的学习——施一公教授的两篇博文
  16. Bootstrap学习笔记02
  17. 涂抹mysql 完整_涂抹MYSQL-跟着三思一步一步学MySQL
  18. 如何用计算机弹出斗地主的声音,玩斗地主没声音电脑瞎出牌。我点的没有.怎么办?...
  19. 辽宁大学计算机专业基础考试题型,2018年辽宁大学854计算机专业基础考研大纲...
  20. 纯js 编canvas处理图片, 涂鸦笔、画布图片内容旋转 放大缩小 裁剪框 。兼容ie9及以上 谷歌、360、火狐浏览器

热门文章

  1. 基于Stm32的4G模块实现内网透传通信(代码后附)
  2. Android入门(二)——常见布局与控件
  3. 一起艳学3步把tomcat配置https(小程序)
  4. Git拉取项目时报错: self signed certificate
  5. Iperf3测速教程
  6. Java实现客户端与服务器端的时间同步
  7. 去除img标签图片底部空白
  8. Apache Arrow:列式内存
  9. 蛋花花:程序员入门门槛真的很低吗
  10. 1.什么是供给需求交易?