题目要求:
参见附件,补充MyList.java的内容,提交运行结果截图(全屏)
课下推送代码到码云
public class MyList {
public static void main(String [] args) {
//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点
//把上面四个节点连成一个没有头结点的单链表
//遍历单链表,打印每个结点的
//把你自己插入到合适的位置(学号升序)
//遍历单链表,打印每个结点的
//从链表中删除自己
//遍历单链表,打印每个结点的
}
}
public class Node<T> //单链表结点类,T指定结点的元素类型
{
public T data; //数据域,存储数据元素
public Node<T> next; //地址域,引用后继结点
public Node(T data, Node<T> next) //构造结点,data指定数据元素,next指定后继结点
{
this.data = data; //T对象引用赋值
this.next = next; //Node<T>对象引用赋值
}
public Node()
{
this(null, null);
}
public String toString() //返回结点数据域的描述字符串
{
return this.data.toString();
}
}
题目分析:
- MyList 中添加节点 list.add ,遍历输出集合中的值 Iterator<String> iter=list.iterator(); 都是课本上有介绍的基本操作。
- 需要思考的是,如何把我的学号插入到合适的位置,题目中已有提示使用学号升序排列,那我们就可以调用“数据结构-排序(选做)”中提到的 Collection.sort(List) 或者 Collection.sort(List, Compatator) 来完成升序排列。
- 最后 list.remove 删除自己学号,再打印出链表即可
代码如下:
import java.util.*; public class MyList { public static void main(String [] args) { //选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点 List<String> list=new LinkedList<String>(); list.add("20175219"); list.add("20175220"); list.add("20175222"); list.add("20175223"); System.out.println("初始链表:"); //把上面四个节点连成一个没有头结点的单链表 Iterator<String> iter=list.iterator(); while(iter.hasNext()){ String danlianbiao=iter.next(); System.out.println(danlianbiao); } //遍历单链表,打印每个结点的 list.add("20175221"); //把你自己插入到合适的位置(学号升序) System.out.println("插入学号后排序,打印链表:"); Collections.sort(list); iter=list.iterator(); while(iter.hasNext()){ String danlianbiao=iter.next(); System.out.println(danlianbiao); } //遍历单链表,打印每个结点的 list.remove("20175221"); //从链表中删除自己 System.out.println("删除学号后,打印链表:"); iter=list.iterator(); while(iter.hasNext()){ String danlianbiao=iter.next(); System.out.println(danlianbiao); } //遍历单链表,打印每个结点的 } }