每日编程5之逆序输出单链表

因为只要求逆序输出,考虑采用递归思想,以减少对链表结构的破坏。

这里主要训练递归算法的编码技巧。

首先,这里递归的单位应该是每个链表元素,对这个元素的核心处理操作是打印其数据项,因为是倒序输出,所以将递归处理操作放在核心处理操作之前。

递归结束的条件是,当前节点为空节点,这个时候不做任何处理,前面的递归函数开始依次出栈,因为第一个出栈的是链表尾元素,所以后续的数据输出也是逆序的。

核心代码很简单:


int linkList_output_fromTail(struct node* head)
{
        if(head != NULL) // key point 1  :递归结束,函数出栈条件
        {
                linkList_output_fromTail(head->next);  //  key point 3 : 递归操作与核心处理操作的顺序,递归的参数,要考虑好,
                printf("%d  ",head->data);   //   key point 2 :核心处理
        }


// key point 4 : 没有其他通用处理部分
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值