数据结构之顺序表
构造一个空的顺序表
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | #define MAX_SIZE 100 typedef struct { int *address; //基地址 int length; //顺序表长度 int size; //顺序表总空间 }LIST; //创建一个空的顺序表 bool initList(LIST& list) { list.address = new int [MAX_SIZE]; if (!list.address) return false ; list.length = 0; list.size = MAX_SIZE; return true ; } |
尾部添加数据
1 2 3 4 5 6 7 8 | bool addPUSH(LIST& list, int data) { if (list.length >= MAX_SIZE) return false ; list.address[list.length] = data; list.length++; return true ; } |
范围内插入数据
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | bool ListInsert(LIST& list, int i, int data) { if (i < 0 || i >= 100) return false ; if (list.length == MAX_SIZE) return false ; for ( int j = list.length-1; j >= i; j--) { list.address[j + 1] = list.address[j]; //从最后一个元素开始后移,直到第 i 个元 素后移 } list.address[i] = data; //将新元素 e 放入第 i 个位置 list.length++; //表加一 return true ; } |
删除元素
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | bool Listdelete(LIST& list, int addr) { if (addr<0 || addr>list.length) return false ; if (addr == list.length - 1) { list.length--; return true ; } for ( int i = addr; i < list.length; i++) { list.address[i] = list.address[i +1]; } list.length--; return true ; } |
根据数据删除元素
bool deletedatalist(LIST& l, int data) { for (int i = 0; i < l.length; i++) { if (l.addrss[i] == data) { for (int j = i; j < l.length; j++) { l.addrss[j] = l.addrss[j + 1]; } l.length--; return true; } } return false; }
顺序表销毁
1 2 3 4 5 6 7 | bool destroyList(LIST& list) { if (list.address) delete []list.address; list.length = 0; list.size = 0; return true ; } |
main函数
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | LIST list; cout << "初始化顺序表" << endl; if (initList(list)) { cout << "顺序表初始化成功" << endl; } int count = 0; cout << "追加个数\t" ; cin >> count; int data = 0; for ( int i = 0; i < count; i++) { cout << "参数:\t" ; cin >> data; cout<<endl; addPUSH(list, data); } listPrint(list); cout << "插入位置:\t" ; cin >> count; cout << "参数:\t" ; cin >> data; cout << endl; ListInsert(list, count, data); listPrint(list); cout << "所需删除的数据的地址:" ; cin >> data; if (Listdelete(list, data)) cout << "\t删除成功" << endl; else cout << "\t删除失败" << endl; listPrint(list);cout << "顺序表销毁..." << endl; destroyList(list); listPrint(list); system ( "pause" ); |
编译环境VS2019
注:如有错误请与我联系,万分感谢!!!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· Docker 太简单,K8s 太复杂?w7panel 让容器管理更轻松!