题目:输入一个链表的头结点,从尾到头反过来打印出每个结点的值。
方法一:利用栈结构先进后出的特点
void printListRever( listNode * pHead )
{
stack<listNode *> nodes;
listNode *pNode = pHead;
while( NULL != pNode )
{
nodes.push( pNode );
pNode = pNode->next;
}
cout << " [begin] -> ";
while( !nodes.empty() )
{
pNode = nodes.top();
cout << pNode->data << " -> ";
nodes.pop();
}
cout << " [end] " << endl;
}
方法二:递归(链表非常长可能导致函数调用栈溢出)
void printListReverRecursive( listNode * pHead )
{
if( NULL != pHead )
{
if( NULL != pHead->next )
{
printListReverRecursive( pHead->next );
}
cout << " \t " << pHead->data;
}
}