数据结构java单链表排序_数据结构-单链表与排序(选做)

这篇博客探讨了如何在数据结构中使用Java实现单链表,并对其进行排序。作者通过创建一个`MyList`类,展示了如何构建单链表、插入节点以及删除节点。此外,还详细介绍了如何为`Student`类实现`Comparator`接口,以根据学号和总成绩进行升序排序。博客提供了实验步骤和代码实现,包括`Student`和`Undergraduate`子类,鼓励读者自己尝试并提交代码到码云。
摘要由CSDN通过智能技术生成

任务要求

补充MyList.java的内容,提交运行结果截图(全屏),课下推送代码到码云

public class MyList {

public static void main(String [] args) {

//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点

//把上面四个节点连成一个没有头结点的单链表

//遍历单链表,打印每个结点的

//把你自己插入到合适的位置(学号升序)

//遍历单链表,打印每个结点的

//从链表中删除自己

//遍历单链表,打印每个结点的

}

}

public class Node //单链表结点类,T指定结点的元素类型

{

public T data; //数据域,存储数据元素

public Node next; //地址域,引用后继结点

public Node(T data, Node next) //构造结点,data指定数据元素,next指定后继结点

{

this.data = data; //T对象引用赋值

this.next = next; //Node对象引用赋值

}

public Node()

{

this(null, null);

}

public String toString() //返回结点数据域的描述字符串

{

return this.data.toString();

}

}

在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:

有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List)

没有类的源代码,或者多种排序,新建一个类,实现Comparator接口 调用Collection.sort(List, Compatator)

针对下面的Student类,使用Comparator编程完成以下功能:

在测试类StudentTest中新建学生列表,包括自己和学号前后各两名学生,共5名学生,给出运行结果(排序前,排序后)

对这5名同学分别用学号和总成绩进行增序排序,提交两个Comparator的代码

课下提交代码到码云

class Student {

private String id;//表示学号

private String name;//表示姓名

private int age;//表示年龄

private double computer_score;//表示计算机课程的成绩

private double english_score;//表示英语课的成绩

private double maths_score;//表示数学课的成绩

private double total_score;// 表示总成绩

private double ave_score; //表示平均成绩

public Student(String id, String name){

this.id = id;

this.name = name;

}

public Student(String id, String name, char sex, int age){

this(id, name);

this.sex = sex;

this.age = age;

}

public String getId(){

return id;

}//获得当前对象的学号,

public double getComputer_score(){

return computer_score;

}//获得当前对象的计算机课程成绩,

public double getMaths_score(){

return maths_score;

}//获得当前对象的数学课程成绩,

public double getEnglish_score(){

return english_score;

}//获得当前对象的英语课程成绩,

public void setId(String id){

this.id=id;

}// 设置当前对象的id值,

public void setComputer_score(double computer_score){

this.computer_score=computer_score;

}//设置当前对象的Computer_score值,

public void setEnglish_score(double english_score){

this.english_score=english_score;

}//设置当前对象的English_score值,

public void setMaths_score(double maths_score){

this.maths_score=maths_score;

}//设置当前对象的Maths_score值,

public double getTotalScore(){

return computer_score+maths_score+english_score;

}// 计算Computer_score, Maths_score 和English_score 三门课的总成绩。

public double getAveScore(){

return getTotalScore()/3;

}// 计算Computer_score, Maths_score 和English_score 三门课的平均成绩。

}

class Undergraduate extends Student{

private String classID;

public Undergraduate(String id, String name, char sex, int age,String classID){

super(id,name,sex,age);

this.classID=classID;

}

public String getClassID(){

return classID;

}

public void setClassID(String classID){

this.classID=classID;

}

}

实验结果

a1bf014f85bd44c5ae1332d0329ee21f.png

89f5bbb7cac651585d70f4cd7edfe349.png

码云链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值