之前写过一个栈模拟递归
那个题是不让用递归(话说我有次笔试也是不让用递归)
简单的介绍一下,递归本质是一个栈结构,不断的调用自身。
而栈的大小是有限的,所以如果递归的层数太多,可能会栈溢出。
好了题目是这样的:
逆序输出一个单向链表
首先,用几个游标是不能达到效果的;当然也可以先逆转链表的方向。。这样略复杂,并且会改变现有的链表,或者使用额外内存。
也可以用一个栈,push进去再pop,这样也会占用内存。
(不过也是不错的)
那还有一种方法呢,就是用递归,和树一样,后序输出就行了;
后序输出就是,在递归调用完了,执行后面的语句的时候,打印出来。
其实这就很像一个栈的功能了。
代码:
void reversePrint(listNode* l)
{
if(!l)
return;
if(l->next)
{
reversePrint(l->next);
}
std::cout<<l->data;
}
文章参考何海涛大神文章
网友评论