一、顺序表的插入
需要注意的是& 和 *在函数中的区别,如果为&,则是引用,而*是指针的意思。两者都要都可传值进来,传进来之后,& 是用点号(.)实现, *是用箭头(->)来实现。而两者最大的区别在于方式不同而已。还有一种情况是 都没有标识符的,他的作用只是传值进来,并没有采取修改的作用。
代码如下:
status ListInsert(LinkList &L,int i,ElemType e){ // 采取为&
if(i<1 || i>L.length+1) return error;
if(i==Maxsiae) return error; // maxsize 为最大长度
for (j=L.lenth-1;j>i-1;j--){
L.elem[j+1]=L.elem[j]; // 本质为后退一步
}
L.elem[i-1]=e;
L.lenth++;
return ok;
}
}
status ListInsert(LinkList *L,int i,ElemType e){ // 采取为*
if(i<1 || i>L->length+1) return error;
if(i==Maxsiae) return error; // maxsize 为最大长度
for (j=L->lenth-1;j>i-1;j--){
L->elem[j+1]=L->elem[j]; // 本质为后退一步
}
L->elem[i-1]=e;
L->lenth++;
return ok;
}
核心代码 :
for(j=L.length;j>i-1;j--)
l.elem[j+1]=l.elem[j]; // // 本质为后退一步
二、顺序表的删除
删除的思想,本质就是在某给点位上,将后面的数据向该点移动,并且其后的数据覆盖该点。
代码如下:
status Listdesert(LinkList &L,ElemType e){
if(i<1 || i>L.length+1) return error;
for (j=i;j<length-1;j++){ // 注意是该点上操作
L.elem[j-1]=L.elem[j]; // 本质为向前一步
}
L.length--;
return ok;
}
核心代码为:
for (j=i;j<length-1;j++){ // 注意是该点上操作
L.elem[j-1]=L.elem[j]; // 本质为向前一步
}
以上就是线性表我遇到的一些问题和一些思维方式,欢迎大佬们的指正! 写博客不容易,还请你随手点个关注,你的一点,就是我永生的老爷。(写博客的第三篇)