从尾到头打印链表
来源:互联网 发布:超星查找自己的网络课 编辑:程序博客网 时间:2024/06/05 18:18
从尾到头打印链表
- 参与人数:2664时间限制:1秒空间限制:32768K
- 通过比例:18.30%
- 最佳记录:0 ms|8552K(来自 xiholix)
题目描述
输入一个链表,从尾到头打印链表每个节点的值。
题目很简单吧,从简单的开始嘛。这是一个不带头结点的链表;
思路:用vector的插入语句insert
先来回顾下insert的语法
insert 函数 语法: <strong>iterator insert( iterator loc, const TYPE &val );</strong> void insert( iterator loc, size_type num, const TYPE &val ); void insert( iterator loc, input_iterator start, input_iterator end ); insert() 函数有以下三种用法: 在指定位置loc前插入值为val的元素,返回指向这个元素的迭代器, 在指定位置loc前插入num个值为val的元素 在指定位置loc前插入区间[start, end)的所有元素 . 举例: //创建一个vector,置入字母表的前十个字符vector<char> alphaVector;for( int i=0; i < 10; i++ ) alphaVector.push_back( i + 65 );//插入四个C到vector中vector<char>::iterator theIterator = alphaVector.begin();alphaVector.insert( theIterator, 4, 'C' );//显示vector的内容for( theIterator = alphaVector.begin(); theIterator != alphaVector.end(); theIterator++ ) cout << *theIterator;这段代码将显示: CCCCABCDEFGHIJ
每次从链表里取出的值,插入vector的头部,然后输出的时候就是逆序的链表了。
#include<stdio.h>#include<stdlib.h>#include<vector>#include<iostream>using namespace std;typedef struct ListNode{ int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL){}}ListNode,*LinkList;class Solution{public: vector<int> printListFromTailToHead(struct ListNode* head) { vector<int> arr; while(head!=NULL) { arr.insert(arr.begin(),head->val);//吧val插入vector的开头 head=head->next; } return arr; } void CreatList(LinkList &L,int n) { LinkList q,p; // L=(LinkList)malloc(sizeof(ListNode)); L=new ListNode(NULL); // L->next=NULL;//创建一个不带带头结点的单链表 p = L; //L为头结点 if(n>0) cin>>p->val; int x; for(int i=0;i<n-1;i++) { cin>>x; q=new ListNode(x); p->next=q; p = q ; } }};int main(){ Solution so; int n; scanf("%d",&n); LinkList L; so.CreatList(L,n); vector<int> ans=so.printListFromTailToHead(L); vector<int>::iterator it;// printf("%d\n",ans[0]); for(it=ans.begin();it!=ans.end();it++) printf("%d\t",*it); return 0;}
方法二:递归先放最后一个数;
class Solution {public: vector<int> printListFromTailToHead(struct ListNode* head) { vector<int> dev; if(head!=NULL) { if(head->next!=NULL) { dev=printListFromTailToHead(head->next); } dev.push_back(head->val); } return dev; }};
0 0
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 【20】从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- 从尾到头打印链表
- Offer5 从尾到头打印链表
- 从尾到头打印链表
- 1、从尾到头打印链表
- 从尾到头打印链表
- 数据结构之---C语言实现选择排序
- 最重要的十年做什么才不浪费?
- Android Studio 快捷键
- 清除自动运行病毒后恢复消失的文件夹
- MAHOUT之关联规则挖掘算法
- 从尾到头打印链表
- 公司项目中怎样去使用全局变量和宏的使用场景
- Bestcoder #54 div2
- 浅析JBPM工作流引擎
- RSA算法原理(一)
- [Java Concurrency in Practice]第十二章 并发程序的测试
- 1205 吃糖果(鸽巢原理)
- RSA公钥密码
- linux,/etc/passwd,/etc/shadow详解