剑指offe 面试题5, 从尾到头打印链表

Posted 努力奋斗-不断进化

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了剑指offe 面试题5, 从尾到头打印链表相关的知识,希望对你有一定的参考价值。

输入一个链表的头结点,从尾到头反过来打印每个结点的值。

C++版本

struct ListNode

	int m_nKey;
	ListNode* m_pNext;
;

方法1 使用栈的先进后出,将每个结点存入到栈中,然后输出。

#include<iostream>
#include<stack>

struct ListNode

	int m_nKey;
	ListNode* m_pNext;
;


void PrintListReversingly_Iteratively(ListNode* pHead)

	std::stack<ListNode*> nodes;

	ListNode* pNode = pHead;

	while (pNode != NULL)
	
		nodes.push(pNode);
		pNode = pNode->m_nKey;
	

	while (!nodes.empty())
	
		pNode = nodes.top();
		printf("%d\\t", pNode->m_nKey);
		nodes.pop();
	


方法2

//递归本质上是一个栈结构,可以用递归实现,每访问到一个结点的时候,先递归输出它后面的结点,
//在输出结点本身,这样链表的输出结果就反过来了。

 

void PrintListReversingly_Recuesively(ListNode* pHead)

	if (pHead != NULL)
	
		if (pHead->m_pNext != NULL)
		
			PrintListReversingly_Recuesively(pHead->m_pNext);
		

		printf("%d\\t", pHead->m_nKey);
	

 

//如果链表非常长,就会导致函数调用的层级很深,从而导致函数调用栈溢出,显式用栈基于循环实现的代码鲁棒性要好一些。

以上是关于剑指offe 面试题5, 从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode | 面试题06. 从尾到头打印链表剑指OfferPython

剑指Offer之面试题6:从尾到头打印链表

剑指offer 面试题6.从尾到头打印链表

剑指OFFER----面试题06. 从尾到头打印链表

LeetCode 剑指offer 面试题06. 从尾到头打印链表

LeetCode 剑指offer 面试题06. 从尾到头打印链表