题目:输入一个链表的头节点,从尾到头反过来打印出每个节点的值。
思路:借助栈实现,或者使用递归实现。
import java.util.Stack;
class LinkNode {
LinkNode next;
int value;
}
public class PrintListReverse_06 {
public void reverse(LinkNode headNode) {
Stack<LinkNode> stack = new Stack<LinkNode>();
while(headNode != null) {
stack.push(headNode);
headNode = headNode.next;
}
while(!stack.empty()) {
System.out.print(stack.pop().value + " ");
}
System.out.println();
}
public static void main(String[] args) {
//输入的链表有多个节点
LinkNode node1 = new LinkNode();
LinkNode node2 = new LinkNode();
LinkNode node3 = new LinkNode();
node1.value = 1;
node2.value = 2;
node3.value = 3;
node1.next = node2;
node2.next = node3;
PrintListReverse_06 plr = new PrintListReverse_06();
plr.reverse(node1);
//输入的链表有一个节点
LinkNode node4 = new LinkNode();
node4.value = 4;
plr.reverse(node4);
//输入的链表头节点为null
plr.reverse(null);
}
}