删除单链表中从下标为i的节点开始的连续可个节点的算法?下面这个删除函数看不懂,求给解释!

intshanChuJD(LinkListllist,intstartIndex,intnumToDel){if(startIndex==0&&numToDel==1){... int shanChuJD(LinkList llist, int startIndex, int numToDel)
{
if(startIndex==0 && numToDel==1)
{
llist->link = llist->link->link;
return 1;
}
else if(startIndex==0 && numToDel>1)
{
startIndex=1;
numToDel-- ;
shanChuJD(llist,startIndex,numToDel);
shanChuJD(llist,0,1);
return 1;
}
PNode p , q ;
int i;
p = llist->link;
for(i=1;i<startIndex;i++) p=p->link; /* 让p指向 第一个被删除节点的 前驱节点*/

q = p->link;
for(i=0;i<numToDel;i++) q=q->link; /* 让q指向 被最后一个被删除节点的 后继节点 */
/* 删除指定的节点 */
p->link = q;
return 1;
}
展开
 我来答
匡荏苒2
推荐于2016-08-15
知道答主
回答量:15
采纳率:0%
帮助的人:7.8万
展开全部
前面的if else 结构 用递归的方法处理 开始位置为第一个节点的处理方法。

剩下的就是非第一个位置开始的删除,先找到开始删除的位置的前一个节点,然后把找个节点的指针指到 删除的N个节点之后的那个节点,实现了删除。
追问
if里面的那个指针,。。。-》link怎么解释呢
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式