題目:輸入一個鏈表的頭節點,從尾到頭反過來打印出每個節點的值。
思路:借助棧實現,或者使用遞歸實現。
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);
}
}