题目
输入一个链表的头节点,从尾到头反过来打印出每个节点的值。
思路
直接用栈。
代码
struct ListNode
{
int m_nValue;
ListNode*m_pNext;
};
void PrintListReverse(ListNode*pHead)
{
stack<int> nodeStack;
ListNode*pNode=pHead;
while(pNode!=NULL)
{
nodeStack.push(pNode->m_nValue);
pNode=pNode->m_pNext;
}
while(!nodeStack.empty())
{
cout<<nodeStack.top();
nodeStack.pop();
}
}
思路二
递归在本质上就是一个栈结构,既然用栈可以解决,那么用递归的思想也可以。
代码
struct ListNode
{
int m_nValue;
ListNode*m_pNext;
};
void PrintListReverse(ListNode*pHead)
{
ListNode*pNode=pHead;
if(pNode->m_pNext!=NULL)
PrintListReverse(pNode->m_pNext);
cout<<pNode->m_nValue;
return;
}