顺序表——动态分配与静态分配
#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; }
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2584000.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!