两个思路:
1:利用栈“先进后出,后进先出”的原则,把链表从头到尾放进去,然后就可以从尾到头取出来;
2:利用递归函数轻松完成。
代码如下:
struct ListNode
{
int value;
ListNode* m_pNext;
};
//利用栈
void ReverseStack(ListNode* pHead)
{
ListNode* pNode=pHead;
stack<ListNode*> node;
while (pNode!=NULL)
{
node.push(pNode);
pNode=pNode->m_pNext;
}
while (!node.empty())
{
pNode=node.top();
printf("%d\n",pNode->value);
node.pop();
}
}
//利用递归函数
void ReveseRecursive(ListNode* pHead)
{
if (pHead!=NULL)
{
if (pHead->m_pNext!=NULL)
{
ReveseRecursive(pHead->m_pNext);
}
printf("%d\t",pHead->value);
}
}