在文章中,作者介绍了线性链表的插入操作,并且展示了示例代码。
在本篇文章中,作者将介绍线性链表的按位序删除操作,同时对代码进行分析。
通过文章我们知道,线性链表的按位序插入操作本质上其实线找到第i-1个结点,将新插入节点s的next指针指向第i个节点,同时将第i-1个结点的next指针指向s结点。
那么按位删除操作是怎么样的呢?其实它的实现与插入操作是非常类似的,首先,我们需要找到第i-1个结点,之后将其指针指向第i+1个结点,最后用e返回第i个结点的值并释放第i个结点。
原始链表接下来我们就来看看如何用c++代码来实现线性链表的删除操作:
将第i-1个结点指向第i+1个结点boolListDelete(LinkListl,inti,inte){
if(i1){
returnfalse;
//TODO
}//判断插入位置i,若小于1则其不合法
Node*p;//当前扫描的结点
p=l;
intj=0;//当前p指向的是第几个结点
while(p!=NULLji-1){//循环找到第i-1个结点
p=p-next;
j++;
//TODO
}
if(p==NULL){//若p为空,则i值不合法
returnfalse;
//TODO
}
释放掉需删除结点if(p-next==NULL){//若p的下一个结点为空,代表第i-1个结点后没有其它结点
returnfalse;
//TODO
}
Node*q=p-next;//令q指向要被删除的结点
e=q-data;//将q的值赋给e
p-next=q-next;//将*q从链表中断开
free(q);//释放q结点
returntrue;
}
本篇文章到此就结束了,如果大家有什么问题,欢迎在下方留言,讨论。