当前位置:
首页 >
【数据结构】—顺序表的插入、删除、查找操作
发布时间: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年技术见证,附赠技术全景图总结
以上是生活随笔为你收集整理的【数据结构】—顺序表的插入、删除、查找操作的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: C语言学习之通过指针变量调用它所指向的函
- 下一篇: vs2013配置opencv2.4.9后