//在线性表中插入一个元素 Status Listinsert_sq(sqlist &L,int i,ElemType e) { ElemType *p,*q,*newbase

2020-06-23 社会 472阅读
我也是菜鸟,不过代码看得懂不会写,呵呵!
if (i<1 || i>L.length+1) return ERROR;
判断插入位置,如果<1或大于L.length+1就出错;
if (L.length>=L.listsize) {
newbase=(ElemType *) realloc(L.elem, (L.listsize+Listincrement) *sizeof(ElemType));
if (!newbase) exit(OVERFLOW);
如果正确,当原先表存储空间已满时,就给newbase动态增加一个长为Listincrement的空间,无法分配则出错,L.elem=newbase; L.listsize+=Listincrement 即新的存储空间基址和长度
q=&(L.elem[i-1]); 把插入位置原来的元素地址赋予q,
for(p=&(L.elem[L.length-1]);p>=q;--p) *(p+1)=*p;该算法中表为顺序存储,各元素在存储器中相邻存放,所以用一个for循环语句把从q开始到表最后的每个值的存储位置后移一个位置
*q=e; ++L.length;
return OK; 把新元素的值赋给指针q,表长加一,成功
声明:你问我答网所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流。若您的权利被侵害,请联系fangmu6661024@163.com