资讯动态

顺序表——动态分配与静态分配

发布时间:2026/10/2 14:46:37 来源:尧图企业网站定制
#include stdio.h #include stdlib.h #define InitSize 100 //定义动态表的初始长度 #define MaxSize 100 //定义一个静态顺序表的最大值 //静态顺序表节点定义 typedef struct { int data[MaxSize]; //ElemType data[];---使用int为例定义一个静态顺序表 int length; //顺序表的当前长度 }SqList; //静态顺序表初始化 void InitList(SqList* L) { L-length0; } //动态顺序表节点定义 typedef struct { int *data; //ElemType *data;---指示动态分配数组的指针 int length,SeqMaxSize; //数组当前个数和最大容量 }SeqList; //动态顺序表初始化 void InitSeqList(SeqList * L) { L-data(int*)malloc(InitSize*sizeof(int)); //分配内存空间 L-length0; L-SeqMaxSizeInitSize; } //顺序表L的第i位置插入新元素key bool ListInsert(SqList* L,int i , int key) { if(i1 || iL-length1) //判断i的范围是否合法 return false; if(L-lengthL-SeqMaxSize) return false; for(int jL-length; ji; j--) L-data[j]L-data[j-1]; L-data[i-1]key; L-length; return true; } //删除顺序表L中第i个位置元素 bool SeqDelete(SeqList* L, int i , int * key) { if(i1 || iL-length) return false; keyL-data[i-1]; for(int ji; jL-length; j) L-data[j-1]L-data[j]; L-length--; return true; } //查找顺序表中等于key的元素 int LocateKey(SqList* L, int key) { int i; for(i0; iL-length; i) if(L-data[i]key) return i1; return 0; } int main() { SqList SL1; InitList(SL1); //初始化静态顺序表 SeqList SEL1; InitSeqList(SEL); //初始化动态顺序表 ListInsert(SEL,2,3); //在SEL表的第2个位置添加元素3 SeqDelete(SEL,2,3); //删除SEL表的第2个位置的元素 LocateKey(SEL,2); //查找顺序表中等于2的元素 return 0; }

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑