剑指offer-5 从尾到头打印链表
2015-04-29 11:03
459 查看
#include <iostream> #include <cstdlib> #include <stack> #include <vector> using namespace std; struct LinklistNode { int value; LinklistNode* next; LinklistNode(int val) : value(val),next(nullptr) {} }; /* 方法一、正常打印链表。将链表的值压入栈中,然后出栈 */ vector<int> PrintListReversing(LinklistNode* head) { if(head==nullptr) exit(EXIT_SUCCESS); stack<LinklistNode*> nodes; LinklistNode* temp = head; while(temp!=nullptr) { nodes.push(temp); temp = temp->next; } vector<int> result; while(!nodes.empty()) { result.push_back(nodes.top()->value); nodes.pop(); } return result; } /* 方法二、递归在本本质上就是一个栈结构 在打印当前结点值的时候,首先打印该节点的下一个结点 */ void PrintListReversing_2(LinklistNode* head) { if(head!=nullptr) { if(head->next != nullptr) { PrintListReversing_2(head->next); } cout<<head->value<<endl; } } int main() { LinklistNode* head = new LinklistNode(2); LinklistNode* node1 = new LinklistNode(3); LinklistNode* node2 = new LinklistNode(4); LinklistNode* node3 = new LinklistNode(5); LinklistNode* node4 = new LinklistNode(6); head->next = node1; node1->next = node2; node2->next = node3; node3->next = node4; node4->next = nullptr; //vector<int> result = PrintListReversing(head); PrintListReversing_2(head); /*vector<int>::iterator iter = result.begin(); for(; iter!= result.end(); iter++) cout<<*iter<<endl; */ delete head; delete node1; delete node2; delete node3; delete node4; return 0; }
相关文章推荐
- 【剑指offer】面试题5:从尾到头打印链表
- 剑指offer之从尾到头打印链表
- 剑指offer_面试题5_从尾到头打印链表(栈和递归实现)
- 剑指offer: 从尾到头打印链表(链表)
- 剑指Offer面试题:4.从尾到头打印链表
- 剑指offer__02__输入一个链表,从尾到头打印链表每个节点的值。
- 【剑指Offer】003 从尾到头打印链表
- 剑指offer|面试题5:从尾到头打印链表(Java实现)
- 剑指offer面试42翻转单词顺序和面试5从尾到头打印链表
- 剑指offer-题5:从尾到头打印链表
- 剑指offer第三题【从尾到头打印链表】c++实现
- 【剑指offer】Q5:从尾到头打印链表
- 剑指offer 数字在排序数组中出现的次数 从尾到头打印链表 跳台阶 变态跳台阶
- 剑指offer 05: 从尾到头打印链表
- 【剑指offer】从尾到头打印链表
- 剑指offer-05:从尾到头打印链表
- 剑指offer--从尾到头打印链表
- 剑指offer-从尾到头打印链表
- 【剑指offer】从尾到头打印链表
- 剑指offer5,从尾到头打印链表