从尾到头打印链表

Posted ssopp24

tags:

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

struct ListNode
	int m_nKey;
	ListNode* m_pNext;

	ListNode( ListNode* pNext, int value )
		: m_pNext( pNext )
		, m_nKey( value )
	
;



递归版本:

void printListFromTailToHead(ListNode* head)

	if ( NULL == head )
		return;

	if ( NULL != head->m_pNext )
		printListFromTailToHead( head->m_pNext );

	cout << head->m_nKey << " ";


循环版本:
vector版本
vector<int> printListFromTailToHead(ListNode* head)

	vector<ListNode*> v1;
	vector<int> v2;

	if ( NULL == head )
		return v2;

	while ( NULL != head )
		v1.push_back( head );
		head = head->m_pNext;
	

	while ( !v1.empty( ) )
		v2.push_back( v1.back( )->m_nKey );
		v1.pop_back( );
	

	return v2;

stack循环版本:

void printListFromTailToHead( ListNode* pHead )

	if ( NULL == pHead )
		return;

	stack<ListNode*> s;

	while ( NULL != pHead )
		s.push( pHead );
		pHead = pHead->m_pNext;
	

	while ( !s.empty( ) )
		cout << s.top( )->m_nKey << " ";
		s.pop( );
	

	return;


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

最强解析面试题:从尾到头打印链表「建议收藏!」

从尾到头打印链表

从尾到头打印链表

从尾到头打印链表

从尾到头打印链表

从尾到头打印链表