面试题五 从头到尾打印单链表
2016-06-13 11:01
295 查看
题目:
输入一个单链表,从尾部到头部打印单链表的每个值输入:
由于我的单链表是使用头插法的,所以当你输入4321的时候,节点从头部到尾部的顺序是1234,所以,当我们输入4321的时候,只要保证输入和输出一样就完全正确。输出:
跟输入一样。。实现思路:
在不修改数据结构的前提下,有两种方式,一种是利用栈,因为栈后进先出的缘故,我们可以把单链表扫一遍,然后存入栈后依次出栈,第二个可以用递归,递归的本质也是栈。Java代码实现:
public class Linked { public Node header; public void insertFirst(Node newNode){ if(header==null){ header=newNode; }else{ newNode.next=header; header=newNode; } } //利用递归 public void display(Node newNode){ if(newNode!=null){ if(newNode.next!=null){ display(newNode.next); } } newNode.displayLink(); } //利用链表 public static void PrintListRevesingly_Iteratively(Node header){ Stack<Node> nodes=new Stack<Node>(); Node newNode=header; while(newNode!=null){ nodes.push(newNode); newNode=newNode.next; } while(!nodes.empty()){ newNode=nodes.pop(); System.out.print(newNode.data+" "); } } public static void main(String[] args) { Linked linked=new Linked(); linked.insertFirst(1); linked.insertFirst(2); linked.insertFirst(3); linked.insertFirst(4); linked.display(linked.header); System.out.println("利用栈"); linked.PrintListRevesingly_Iteratively(linked.header); } }
相关文章推荐
- 面试题四 替换字符中的空格
- 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
- 什么样的人不适合当程序员呢?
- 程序员编程的 7 + 1 条小贴士
- 程序员之路——一个老程序员对刚上大学的学弟学妹的忠告
- 如果做好一个出色的程序员
- 程序员为什么要时刻保持危机感?
- Java多线程和并发基础面试题(问答形式)
- 写给嵌入式程序员的循环冗余校验(CRC)算法入门引导
- 职场笔录-1
- 当前工作是你想要的吗?
- 机器学习常见算法个人总结(面试用)【转载】
- 程序猿装B指南
- 程序员的职业素养-1
- “找到你挚爱的工作,那么,太阳还没升起时,你就迫不及待地去做你热爱的工作了。”
- 只缺一个程序员 如何让产品实现
- 程序员保值的4个秘密
- 实现可重用性即可扩展性 针对剑指offer 面试题14 把数组所有偶数放在奇数后面
- android面试题(一)
- 大龄程序员的未来在何方