20165309 第十周课下作业
20165309 第十周课下作业
相关知识点的总结
1.排序
在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:
-
有类的源代码,针对某一成员变量排序,让类实现
Comparable
接口,调用Collection.sort(List)
。 -
没有类的源代码,或者多种排序,新建一个类,实现
Comparator
接口 调用Collection.sort(List, Compatator)
。package java.util; public interface Comparator<T> { int compare(T o1, T o2); boolean equals(Object obj); }
2.单链表
- 定义:单链表是指每一个结点只包含一个指针域的链表,这个指针指向当前节点的逻辑上的下一个节点,即该指针存储着下一个节点的地址。
public class LNode { public int value; public LNode next; }
- 在节点p后面插入一个元素e:
//创建数据项为x的新结点 LNode q = new LNode(); q.value = x; q.next = null; //插入开始 q.next = p.next;//设置q的后继为p当前的后继 p.next = q;//更新p的后继为q
- 删除节点p后面的节点:
int x = p.next.value;//保存要删除的节点内容 p.next = p.next.next;//直接更新p的后继为它当前后继的后继
- 单链表的常见操作
- 打印链表
- 头插法建立链表
- 尾插法建立链表
- 向链表某位置插入元素
- 从链表某位置删除元素
- 链表中按值查找元素
- 删除链表中所有值为key的节点
- 删除链表中有重复的元素,对于重复多次的元素,保留一次
- 删除链表中有重复的元素,不保留
课上内容的补做
排序
- 针对下面的Student类,使用Comparator编程完成以下功能:
- 在测试类StudentTest中新建学生列表,包括自己和学号前后各两名学生,共5名学生,给出运行结果
- 对这5名同学分别用学号和总成绩进行增序排序
- 运行结果如下:
单链表
- 补充MyList.java的内容
- 运行结果如下:
代码链接
教材十五章代码分析
- 15_1
- 15_2(这是需要歪一下头才能看的....)
- 15_4
- 15_5
- 15_6
- 15_9
- 代码链接
教材第十五章编程题目的补做
- 使用堆栈结构输出an的若干项,其中an=2an-1+2an-1,a1=3,a2=8。
- 编写一个程序,将链表中的学生英语成绩单存放到一个树集中,使得按成绩自动排序,并输出排序结果。
- 有10个U盘,有两个重要的属性:价格和容量。编写一个应用程序,使用TreeMap< K,V >类。
- 代码链接