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;
}