剑指offer面试题5—反向打印链表
2015-01-09 16:29
369 查看
反向打印一个链表
链表不同于数组,内存并不连续,通过节点之间的指针进行连接,逆向打印的时候可以利用栈的特点,比较简单
既然用到栈,那么也就可以利用递归进行完成:
链表不同于数组,内存并不连续,通过节点之间的指针进行连接,逆向打印的时候可以利用栈的特点,比较简单
#include "static.h" #include <iostream> #include <stack> using namespace std; struct ListNode { ListNode * pNext; int Value; }; int main() { stack<ListNode> NodeStory; int i = 0; const int length = 10; ListNode * pHead = new ListNode[length]; ListNode * pNode = pHead; for (;i < (length-1); i++) { pNode->Value = i; ListNode * pNextNode = pNode+1; pNode->pNext = pNextNode; NodeStory.push(*pNode); pNode++; } pNode->Value = i; pNode->pNext = NULL; NodeStory.push(*pNode); while (!NodeStory.empty()) { ListNode tempNode = NodeStory.top(); cout << tempNode.Value<<" "; NodeStory.pop(); }<pre name="code" class="cpp"> delete pHead;return 0;}
既然用到栈,那么也就可以利用递归进行完成:
#include "static.h" #include <iostream> #include <stack> using namespace std; struct ListNode { ListNode * pNext; int Value; }; void PrintNode(ListNode * pHead) { if (pHead != NULL) { if (pHead->pNext != NULL) { PrintNode(pHead->pNext); } cout << pHead->Value<<" "; } } int main() { stack<ListNode> NodeStory; int i = 0; const int length = 10; ListNode * pHead = new ListNode[length]; ListNode * pNode = pHead; for (;i < (length-1); i++) { pNode->Value = i; ListNode * pNextNode = pNode+1; pNode->pNext = pNextNode; NodeStory.push(*pNode); pNode++; } pNode->Value = i; pNode->pNext = NULL; PrintNode(pHead); delete pHead; return 0; }
相关文章推荐
- 剑指offer 反向打印链表
- 剑指offer|面试题5:从尾到头打印链表(Java代码)
- 【剑指offer】面试题5:从尾到头打印链表
- 【剑指Offer面试题】 九度OJ1511:从尾到头打印链表
- 剑指Offer:面试题5——从尾到头打印链表(java实现)
- 剑指offer-面试题5-2 从尾到头打印链表
- 剑指offer 面试题5 从尾到头打印链表 java版答案
- 剑指offer|面试题5:从尾到头打印链表(Java实现)
- 剑指offer-面试题5.从尾到头打印链表
- 剑指offer面试题5-从尾到头打印链表/6-重建二叉树
- 剑指offer - 面试题5:从尾到头打印链表
- 剑指offer-面试题5-从尾到头打印链表
- 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)
- 【剑指Offer学习】【面试题5 : 从尾到头打印链表】
- 剑指offer 面试题5 反向输出链表
- 剑指offer 面试题5——从头到尾打印链表
- 剑指offer面试题5 从头到尾打印链表(java)
- 剑指offer——面试题6:从尾到头打印单向链表
- [剑指offer][面试题5]从尾到头打印链表
- 【剑指offer】面试题5:从尾到头打印链表