【408DS算法题】016基础-倒序输出单链表的结点值

题目

给定单链表的头结点,倒序输出单链表的结点值。


分析实现

要倒序输出链表结点值,首先可以想到的是先将链表的结点值存储到数组中,然后利用数组随机访问的特性进行倒序输出。

如果考虑其它思路的话,还可以使用栈来代替数组——将链表元素依次入栈,然后再不断出栈,就得到了逆序的输出。而再进一步去想,递归也是利用了栈的思想,本文的实现方式就算利用了递归的思想(使用栈和递归相对于使用数组,时间复杂度和空间复杂度并不会优化——递归时的递归栈也会占用存储空间,但使用递归的写法可以让代码更加简洁优雅)。

具体实现如下:

void printReverse(LNode *cur) {
	// 递归基
	if (cur == NULL) {
		return;
	}
	// 首先递归输出后续节点
	printReverse(cur->next);
	// 然后输出当前节点
	cout << cur->val << ' ';
}

总结

本篇文章使用递归函数实现了单链表结点值的逆序输出。单链表的逆序输出本身不是一个很难的题目,但本题还可以作为学习递归函数的一个小练习,递归函数的代码往往很简洁却并不容易书写和理解,如果需要熟练掌握需要多加练习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值