欢迎访问 生活随笔!

生活随笔

当前位置: 首页 >

【数据结构】—顺序表的插入、删除、查找操作

发布时间:2024/7/23 37 豆豆
生活随笔 收集整理的这篇文章主要介绍了 【数据结构】—顺序表的插入、删除、查找操作 小编觉得挺不错的,现在分享给大家,帮大家做个参考.
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define InitSize 10 //默认的最大长度 typedef struct{int *data; //指示动态分配数组的指针 int MaxSize; //顺序表的最大容量 int length; //顺序表的当前长度 }SeqList;void InitList(SeqList &L){//用malloc函数申请一片连续的存储空间 L.data=(int *)malloc(InitSize*sizeof(int));L.length=0;L.MaxSize=InitSize; } //增加动态数组的长度 void IncreaseSize(SeqList &L ,int len){int *p=L.data;L.data=(int *)malloc((L.MaxSize+len)*sizeof(int));for(int i=0;i<L.length;i++){L.data[i]=p[i]; //将数据复制到新区域 }L.MaxSize=L.MaxSize+len;//顺序表最大长度增加len free(p); //释放原来的内存空间 }//插入操作 bool ListInsert(SeqList &L,int i,int e){if(i<1||i>L.length+1){return false;}if(L.length>=L.MaxSize){return false;}for(int j=L.length;j>=i;j--){L.data[j]=L.data[j-1];}L.data[i-1]=e; //把腾出的空间插入元素eL.length++;return true; } //删除操作 bool ListDelete(SeqList &L,int i,int &e) {if(i<1||i>L.length){return false;}e=L.data[i-1];for(int j=i;j<L.length;j++){L.data[j-1]=L.data[j];}L.length--;return true; }//按值查找顺序表,找到第一个元素值等于e的位序并返回其位序 int LocateElem(SeqList L, int e) {int i;for (i = 0; i < L.length; i++)if (L.data[i]==e)return i + 1;return 0; }int main(){int e;SeqList L; //声明一个顺序表 InitList(L); //初始化顺序表 IncreaseSize(L,5);//插入元素 printf("请输入:\n"); for(int i = 0; i < L.MaxSize; i++){scanf("%d",&e);ListInsert(L,i,e); //(顺序表,位序,插入值); }//依次输出顺序表中的元素 for (int i = 0; i < L.length; i++) {printf("data[%d]=%d\n", i, L.data[i]);} //按值查找printf("已找到,6在顺序表中的第:%d位\n", LocateElem(L, 6) );//删除操作 ListDelete(L,3,e);//(顺序表,位序,返回的被删除的元素) printf("删除元素值为:%d\n",e);return 0;return 0; }

输出:

不懂请留言,谢谢!

与50位技术专家面对面20年技术见证,附赠技术全景图

总结

以上是生活随笔为你收集整理的【数据结构】—顺序表的插入、删除、查找操作的全部内容,希望文章能够帮你解决所遇到的问题。

如果觉得生活随笔网站内容还不错,欢迎将生活随笔推荐给好友。