王道课后习题2.3.1:递归删除不带头结点的单链表L中所有值为x的结点

题目描述:

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

算法思想:

核心代码:

void del_x_3(LNode* &L,int x) 
{
    LNode* p;
    if(L==NULL)
        return;
    if(L->data==x)
    {
        p=L;
        L=L->next;
        free(p);
        del_x_3(L,x);
    }
    else
        del_x_3(L->next,x);

}

在这里插入图片描述
L1->L2->L3

L1的地址为650,L2的地址为670,L3的地址为690

递归第一次:del_x_3(L->next,x);

此时的L地址值为670,data=2,所以进行操作L=L->next;此时L的地址为690.

递归第二次:del_x_3(L->next,x);
递归第三次:del_x_3(L->next,x);开始返回

在这里插入图片描述
返回的时候可以发现,现在的1后面指向的是3.实际上并没有断链。

<
  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值