删除单链表中从下标为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;
} 展开
{
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;
} 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询