java使用链表实现排序

题目:

把标准输入的一系列组成链表,重排链表结点,把数据项有序排列,然后打印出排列序列.


代码:

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()));
	}
}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值