将链表逆置(输入时读到-1则停止输入,开始执行程序)
思路:将正序单链表的节点一个个的拆分下来然后进行逆序建立链表;
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import javax.swing.plaf.nimbus.AbstractRegionPainter;
class zz {
public static void main(String[] args) {
Node head;
List arr = new ArrayList();
Scanner cin = new Scanner(System.in);
while(cin.hasNext()){
int tmp = cin.nextInt();
if(tmp!=-1){
arr.add(tmp);
}else
break;
}
head = createList(arr);
head = reverseList(head);
show(head);
}
private static Node reverseList(Node head) {
// TODO Auto-generated method stub
Node p,q;
p = head.next;
head.next = null;
while(p != null){
q = p.next;
p.next = head.next;
head.next = p;
p = q;
}
return head;
}
private static void show(Node head) {
// TODO Auto-generated method stub
Node p;
p = head.next;
while(p!=null){
System.out.print(p.data+" ");
p = p.next;
}
}
private static Node createList(List arr) {
// TODO Auto-generated method stub
//注意head对象的创建
Node head = new Node(),tial;
head.next = null;
tial = head;
for(Object t : arr){
Node p = new Node();
p.data = (int)t;
p.next = null;
tial.next = p;
tial = p;
}
return head;
}
}
class Node{
int data;
Node next;
}