package algorithm;
import java.util.Stack;
public class ReverseLinkedList {
/**
* 借助栈,这个数据结构
* 缺点是需要额外空间
*
* @param node 链表头结点
*/
public static void printReverseLinkedList(Node node) {
if (node == null) return;
Stack<Integer> stack = new Stack<>();
while (node != null) {
stack.push(node.val);
node = node.nextNode;
}
while (!stack.isEmpty()) {
System.out.println(stack.pop());
}
}
/**
* 使用递归思想,要反过来输出链表,我们每访问一个节点时,先输出它后面的节点
* 再输出自身节点;这样输出结果就反过来了
*
* @param node 头结点
*/
public static void printReverseRecursive(Node node) {
if (node == null) return;
printReverseLinkedList(node.nextNode);
System.out.println(node.val);
}
public static void main(String[] args) {
Node node1 = new Node(10);
Node node2 = new Node(11);
Node node3 = new Node(12);
Node node4 = new Node(13);
Node node5 = new Node(14);
Node node6 = new Node(15);
node1.nextNode = node2;
node2.nextNode = node3;
node3.nextNode = node4;
node4.nextNode = node5;
node5.nextNode = node6;
node6.nextNode = null;
// printReverseLinkedList(node1);
printReverseRecursive(node1);
}
}
class Node {
public int val;
public Node nextNode;
public Node(int val) {
this.val = val;
}
}
从尾到头打印链表-Java
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 参考资料: [1]剑指OFFER课本思路 P59[2]如何创建单向链表。参考今天学的:http://www.cnb...