【剑指offer】-从尾到头打印链表
来源:互联网 发布:电子打鼓软件下载 编辑:程序博客网 时间:2024/05/21 11:25
题目:输入一个链表,从尾到头打印链表每个节点的值。
解析:这道题目可以有很多种解法,下面介绍几种自己的解法。
1)利用栈的特性来做,把链表结点依次压入栈,再依次打印出来即可。
2)利用递归来做。
3)把链表反转,再从头到尾打印。
4)利用STL中的vector来做,把链表结点全部存入到vector中,再从后往前打印一遍vector中的数据。
需要注意的是,第一种方法和第四种方法需要申请额外的内存空间,第三种方法会破坏链表的结构。可以在实际解题过程中,根据题目的要求来选择解法。个人比较推荐的是用栈或者递归来做,以下给出这两种方法的代码。
代码:
1)利用栈来做
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: vector<int> printListFromTailToHead(struct ListNode* head) { vector<int> result; if(head==NULL) return result; stack<ListNode *> nodes; ListNode *temp=head; while(temp!=NULL) { nodes.push(temp); temp=temp->next; } while(!nodes.empty()) { temp=nodes.top(); result.push_back(temp->val); nodes.pop(); } return result; }};2)利用递归来做
/*** struct ListNode {* int val;* struct ListNode *next;* ListNode(int x) :* val(x), next(NULL) {* }* };*/class Solution {public: void print(ListNode* head,vector<int> &result) { if(head==NULL) return; print(head->next,result); result.push_back(head->val); } vector<int> printListFromTailToHead(struct ListNode* head) { vector<int> result; print(head,result); return result; }};
1 0
- 剑指offer:5-从尾到头打印链表
- [剑指Offer]7.从尾到头打印链表
- 剑指offer:从尾到头打印链表
- 从尾到头打印链表--《剑指offer》
- 剑指Offer:从尾到头打印链表
- 【剑指offer】从尾到头打印链表
- 【剑指offer】Q5:从尾到头打印链表
- 剑指Offer之从尾到头打印链表
- 剑指offer系列源码-从尾到头打印链表
- 剑指offer 05: 从尾到头打印链表
- 剑指offer--从尾到头打印链表
- 剑指offer-5 从尾到头打印链表
- 剑指Offer之 - 从尾到头打印链表
- 剑指offer 5 -从尾到头打印链表
- 剑指offer: 从尾到头打印链表(链表)
- 《剑指Offer》面试题:从尾到头打印链表
- 剑指offer:从尾到头打印链表
- 剑指offer:从尾到头打印链表代码实现
- hdu 1175 连连看问题
- hdu 4353
- 楼道声光控工作原理
- POJ 1050 To the Max
- 关于jquery 如何判断checkbox 是否选中
- 【剑指offer】-从尾到头打印链表
- LeetCode Delete Node in a Linked List 链表
- 记项目中的一次错误之RecyclerView
- 记录——《C Primer Plus (第五版)》第十章编程练习第三题
- bzoj1621【Usaco2008 Open】Roads Around The Farm
- 安卓中webview与javascript的交互
- linux常用命令chmod,chown,chgrp
- 黑马程序员---正则表达式小结
- 常用的android开发权限