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编程完成以下功能:
  1. 在测试类StudentTest中新建学生列表,包括自己和学号前后各两名学生,共5名学生,给出运行结果
  2. 对这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 >类。
  • 代码链接
posted @ 2018-05-06 14:58  20165309吴思佳  阅读(162)  评论(0编辑  收藏  举报