剑指offer面试题16——反转链表
2015-08-06 09:18
363 查看
题目:
输入一个链表,反转链表后,输出链表的所有元素。
(hint:请务必使用链表)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000):代表将要输入的链表的个数。
输入的第二行包含n个整数t(0<=t<=1000000):代表链表元素。
输出:
对应每个测试案例,
以此输出链表反转后的元素,如没有元素则输出NULL。
样例输入:
样例输出:
输入一个链表,反转链表后,输出链表的所有元素。
(hint:请务必使用链表)
输入:
输入可能包含多个测试样例,输入以EOF结束。
对于每个测试案例,输入的第一行为一个整数n(0<=n<=1000):代表将要输入的链表的个数。
输入的第二行包含n个整数t(0<=t<=1000000):代表链表元素。
输出:
对应每个测试案例,
以此输出链表反转后的元素,如没有元素则输出NULL。
样例输入:
5 12345 0
样例输出:
54321 NULL 这道题思路是:采用三个指针,因为在反转时中间会出现断裂 注意:若链表为NULL或者若链表为只有一个结点的情况。
#include<iostream> #include<vector> usingnamespacestd; //链表的数据结构 structListNode { intval; ListNode*next; ListNode(intx):val(x),next(NULL){} }; //创建一个单链表 ListNode*product(vector<int>&vec,intn) { if(n==0) returnNULL; ListNode*ptr1=newListNode(vec[0]); inti=1; ListNode*ptr2=ptr1; while(i<n) { ptr2->next=newListNode(vec[i]); ptr2=ptr2->next; i++; } returnptr1; } //单链表每个结点的输出 voidcout_node(ListNode*root) { if(root==NULL) return; ListNode*ptr1=root; while(ptr1!=NULL) { cout<<ptr1->val<<''; ptr1=ptr1->next; } cout<<endl; return; } ListNode*reversed_list(ListNode*root) { if(root==NULL) returnNULL; if(root->next==NULL) returnroot; ListNode*ptr1=root; ListNode*ptr2=ptr1->next; ListNode*ptr3=ptr2->next; ptr1->next=NULL; while(1) { ptr2->next=ptr1; ptr1=ptr2; if(ptr3!=NULL) { ptr2=ptr3; ptr3=ptr3->next; } else returnptr2; } } intmain() { intary[10]={1,2,3,4,5,6,7,8,9,10}; vector<int>vec(ary,ary+6); ListNode*root=product(vec,6); cout_node(root); ListNode*root2=reversed_list(root); cout_node(root2); system("pause"); }
相关文章推荐
- 阿里航旅事业部的前端开发面试题
- 软件工程师职场生存技能
- 【LeetCode-面试算法经典-Java实现】【098-Validate Binary Search Tree(验证二叉搜索树)】
- 【LeetCode-面试算法经典-Java实现】【094-Binary Tree Inorder Traversal(二叉树中序遍历)】
- 【LeetCode-面试算法经典-Java实现】【092-Reverse Linked List II(反转单链表II)】
- 黑马程序员——Java基础---反射
- 黑马程序员——Java基础---异常&File
- 黑马程序员——Java基础---IO
- 黑马程序员---指向函数的指针与返回指针的函数
- 20150805面试有感
- 中年程序员的困惑
- Java程序员应该掌握哪些东西
- 保持好奇心,让程序员永远年轻
- Java笔试面试题001
- 新入行程序员应知的十个秘密
- SAP 实习 面试 工作 心得 体会记录
- 二叉树的分层遍历
- 黑马程序员-----java基础之数据类型和运算符
- 黑马程序员——java学习10(毕17)——工具类
- 【求职应聘】岗位职责与要求