本文主要是介绍剑指offer之从尾到头反过来打印每一个结点的值,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目:
输入一个链表的头结点,从尾到头反过来打印出每一个节点的值。
分析:
后进先出,可以用栈来实现。
代码:
链表结点定义如下:
struct ListNode {int m_nKey;ListNode *m_pNext; };
实现代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | void PrintListReverse(ListNode *pHead) { std::stack<ListNode*> nodes;//栈,用来存放遍历到的结点 ListNode *pNode = pHead; while (pNode != NULL) { nodes.push(pNode);//入栈 pNode = pNode->m_pNext; } while (!nodes.empty()) { pNode = nodes.top(); printf ( "%d\t" , pNode->m_nValue); nodes.pop();//出栈 } } |
void
PrintListReversely(ListNode* pListHead) //当访问一个结点是,先递归输出它后面的结点,在输出该结点本身。
{
if
(pListHead != NULL)
{
// Print the next node first
if
(pListHead->m_pNext != NULL)
{
PrintListReversely(pListHead->m_pNext);
}
// Print this node
printf
(
"%d"
, pListHead->m_nKey);
}
}
这篇关于剑指offer之从尾到头反过来打印每一个结点的值的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!