C语言线性表顺序存储结构实例详解
C语言线性表顺序存储结构实例详解
1、什么是顺序存储结构?
用一段地址连续的存储单元依次存储线性表的数据元素。
2、线性表的顺序存储结构
#include#include #defineMax80//存储空间初始分配量 #defineIncrement10//存储空间分配增量 typedefstruct { int*elem;//存储空间基地址,此处为int型,视情况而定 intlength;//元素表当前长度 intsize;//当亲分配的存储容量 }SqList;
3、顺序表的初始化操作是为顺序表分配一个预定大小的数组空间,并将顺序表的长度设为0。
<一>intInitList(SqList&L) { L.elem=(int*)malloc(Max*sizeof(int)); if(!L.elem) return;//exit(0);//存储分配失败 L.length=0;//空表长度为0 L.size=Max;//初始存储容量 returnOk; } <二>intCreatList(SqList&L) { L.elem=(int*)malloc(Max*sizeof(int)); if(!L.emle) return;//exit(0); L.length=0; L.size=Max; printf("请输入表的长度:"); scanf("%d",&L.length); printf("请输入%d个数:",L.length); for(i=0;i4.获取元素操作:将线性表中的第i个位置元素值位置返回
intGetElem(SqList&L,inti,inte) { //1<=i<=L.length if(i<1||i>L.length) returnERROR; *e=L.elem[i-1]; returnOk; }5线性表的插入操作
“ intInsert(SqList&L) { int*_new; inti; inte; printf(“输入要插入的位置及其元素:”); scanf(“%d%d”,&i,&e); if(i<1||i>L.length) { printf(“插入的位置不合法!”); returnERROR; } if(L.length>=L.size)//当前空间已满,增加分配 { _new=(int)malloc(L.elem,(L.length+Increment)*sizeof(int)); if(!_new)//存储分配失败 return;//exit(0); L.elem=_new;//新基址 L.size=L.size+Increment;//增加存储容量 } q=&(L.elem[i-1]);//q为插入的位置 for(p=&(L.elem(L.length-1));p>=q;–p)//插入后元素右移 *q=e;//插入e ++L.length;//长度加一 returnOK; }6、删除元素```
intListDelete(SqList&L,inti,int*e) { intk; if(L.length==0)//线性表为空 returnERROR; if(i<1||i>L.length)//插入不正确 returnERROR; *e=L.elem[i-1]; if(i感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!