我也是菜鸟,不过代码看得懂不会写,呵呵!
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,表长加一,成功