从尾到头打印链表
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;
以上是关于从尾到头打印链表的主要内容,如果未能解决你的问题,请参考以下文章