题目:
把标准输入的一系列组成链表,重排链表结点,把数据项有序排列,然后打印出排列序列.
代码:
import java.util.Scanner;
public class Demo1 {
//把标准输入的一系列组成链表,重排链表结点,
//把数据项有序排列,然后打印出排列序列
static Scanner scan = new Scanner(System.in);
static class Node{
int val;
Node next;
Node(int val,Node next){
this.val = val;
this.next = next;
}//构造函数
}
static Node create(){
System.out.println("输入要待排的个数:");
int times = scan.nextInt();
Node a = new Node(0,null);//创建一个哑结点
for(int i=0;i<times;i++){
a.next = new Node(scan.nextInt(),a.next);
}
return a;
}
static Node sort(Node a){
Node b = new Node(0,null),x,t,u;
while(a.next!=null){
t = a.next;
u = t.next;
a.next = u;
for(x=b;x.next!=null;x=x.next){//从小到大排列
if(x.next.val>t.val){
break;
}
}
t.next = x.next;
x.next = t;//在x结点后插入t结点
}
return b;
}
static void print(Node h){
Node x;
for(x=h;x.next!=null;x=x.next){
System.out.print(x.next.val+" ");
}
}
public static void main(String[] args) {
print(sort(create()));
}
}