要求
从尾到头遍历链表,并且不能改变原链表。
实现原理
利用栈先进后出的原理实现
代码实现
public class LinkedList {
public static void reverseShow(Node head){
if (null == head){
return;
}
Stack<Node> stack = new Stack<>();
Node temp = head;
while(temp != null){
stack.push(temp);
temp = temp.child;
}
while (stack.size() > 0){
System.out.println(stack.pop().item);
}
}
public static class Node<E>{
E item;
Node child;
public Node(E item){
this.item = item;
}
}
}
测试代码
public class LinkedListTest {
LinkedList.Node node = null;
@Before
public void init(){
LinkedList.Node node1 = new LinkedList.Node(10);
LinkedList.Node node2 = new LinkedList.Node(20);
LinkedList.Node node3 = new LinkedList.Node(30);
LinkedList.Node node4 = new LinkedList.Node(40);
node = node1;
node1.child = node2;
node2.child = node3;
node3.child = node4;
}
@Test
public void testReverseShow(){
System.out.println("**********原始链表**************");
LinkedList.show(node);
System.out.println("***********反转输出******************");
LinkedList.reverseShow(node);
}
}