图片来自B站王道考研(侵删)
插入
1.按位序插入(带头结点)
//在第i个位置插入元素e (带头结点)
bool ListInsert(LinkList &L,int i,ElemType e){
if(i<1)
return false;
LNode *p; //指针P指向当前扫描到的节点 } 这几行的目的是
int j = 0; //当前p指向的是第几个结点 } 为了
p = L; //L指向头节点,头结点是第0个节点(不存数据) } 找到
while(p!=NULL && j<i-1){
//循环找到第i-1个结点 } 第i-1个
p->next;// } 结点
j++;// }
}
if(p==NULL) //i值不合法,从此行开始到下面结束,是为了在找到第i-1个节点之后,插入一个新的节点
return false;
LNode *s = (LNode *)malloc(sizeof(LNode));//这一步malloc函数回升请一个新的结点
s->data = e; //将元素e装入到新的结点中
s->next = p->next; //原本p->null的,现在将新申请的结点s也指向p结点指向的下一个结点null
p->next = s; //将节点s连接到p之后(也就是将p指向s)
return true; //插入成功
}
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
2.按位序插入(不带头结点)
bool LintInsert(LinkList &L,int i,ElemType e){
if(i<1)
return false;