1、链表逆序输出
public class Reverse{
public static void main(String[] args) {
Node root=build(5);;
Node node=root;
while(node!=null){
System.out.print(node.value+" ");
node=node.next;
}
System.out.println();
reversePrint(root);
System.out.println();
reversePrint2(root);
}
public static Node build(int len){
Node head=new Node();
Random r=new Random();
head.value=r.nextInt(100);
Node tmp=head;
while((len--)!=1){
Node node=new Node();
node.value=r.nextInt(100);
tmp.next=node;
tmp=node;
}
return head;
}
1.1 递归方式逆序
public static void reversePrint(Node node){
if(node==null){
return;
}
reversePrint(node.next);
System.out.print(node.value+",");
}
1.2 栈逆序输出
public static void reversePrint2(Node node){
Stack<Node> s=new Stack<Node>();
while(node!=null){
s.push(node);
node=node.next;
}
while(!s.isEmpty()){
Node n=(Node) s.pop();
System.out.print(n.value+",");
}
}
private static class Node{
int value;
Node next;
}
}
1.3 头插法插入逆序链表
public void reverseNode(Node head) {
if (head == null) {
return ;
}
Node node ;
Node pre = head;
Node cur = head.next;
Node next ;
while(cur != null){
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
head.next = null;
node = pre;
while (node != null){
System.out.println(node.val);
node = node.next;
}
}