您的位置:首页 > 其它

设计一个递归算法,删除不带头结点的单链表中所有值为x的结点

2017-05-28 22:29 1086 查看

设计一个递归算法,删除不带头结点的单链表中所有值为x的结点

具体的代码如下:

void Del_X_3(LinkList &L,ElemType x)

{

LNode *p; //p指向待删除结点,

if(L==NULL) //递归出口
return ;
if(L->data==x)
{
p=L;
L=L->next; //删除L,并让L指向下一结点
free(p);
Del_X_3(L,x);

}else
{
Del_X_3(L->next,x);//递归调用
}


}

PS:对于这个算法,我最不能理解的是它和普通的算法相比,就是没有让要删除的L节点指向要删除节点的下一个节点,实际上这是因为我们要删除某个节点的时候,传入的是要删除节点的上一个节点,也就是说传入的是L->next,然后删除的时候就相当于执行了L->next=L->next->next;

这个我是参考了网上的一片文章:http://www.cnblogs.com/raby/p/5886714.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
相关文章推荐