20165202 week10课下补做
相关知识点总结
在数据结构和算法中,排序是很重要的操作,要让一个类可以进行排序,有两种方法:
- 有类的源代码,针对某一成员变量排序,让类实现Comparable接口,调用Collection.sort(List)
- 没有类的源代码,或者多种排序,新建一个类,实现Comparator接口 调用Collection.sort(List, Compatator)
- 泛型类声明:
class 名称<泛型列表>
- 创建链表
LinkedList<String> mylist=new LinkedList<String>();
- 向链表增加节点
list.add(E obj);
- 从链表中删除节点
list.remove(index)
- 升序排序
public static sort(List<E>list)
- 折半查找list是否含有和参数key一样的元素
int binarySearch(List<T>,Tkey,compareTo<T>c)
- 树映射 TreeMap<K,V>适合用于数据的排序
- 通过关键字进行排序
TreeMap<StudentKey,Student> treemap= new TreeMap<StudentKey,Student>()
课上内容的补做及结果截图
习题2:
成绩排序已提交,学号排序忘记传了:
习题3:
- 代码实现:
import java.util.*;
class Stu implements Comparable{
int id;
String name;
Stu(String n, int i){
name=n;
id=i;
}
public int compareTo(Object b){
Stu st=(Stu)b;
return (this.id-st.id);
}
}
public class MyList {
public static void main(String [] args) {
//选用合适的构造方法,用你学号前后各两名同学的学号创建四个结点
LinkedList<Stu> list=new LinkedList<>();
list.add(new Stu("其米仁增",5239));
list.add(new Stu("李梓豪",5201));
list.add(new Stu("夏云霄",5203));
list.add(new Stu("贾普涵",5204));
//把上面四个节点连成一个没有头结点的单链表
Iterator<Stu> iter=list.iterator();
//遍历单链表,打印每个结点的
System.out.println("初始单链表为:");
while (iter.hasNext()){
Stu st=iter.next();
System.out.println(st.id+" "+st.name);
}
//把你自己插入到合适的位置(学号升序)
list.add(new Stu("贾海粟",5202));
Collections.sort(list);
//遍历单链表,打印每个结点的
iter=list.iterator();
System.out.println("插入我的学号和姓名后单链表为:");
while (iter.hasNext()){
Stu st=iter.next();
System.out.println(st.id+" "+st.name);
}
//从链表中删除自己
list.remove(1);
iter=list.iterator();
//遍历单链表,打印每个结点的
System.out.println("删除我的学号和姓名后单链表为:");
while (iter.hasNext()){
Stu st=iter.next();
System.out.println(st.id+" "+st.name);
}
}
}
- 运行截图
教材第十五章的代码分析
补做教材第十五章的编程题目
1.使用堆栈结构输出an的若干项,其中an=2an-1+2an-2,a1=3,a2=8
- 代码实现
import java.util.*;
public class E1 {
public static void main(String args[]) {
Stack<Integer> stack=new Stack<Integer>();
stack.push(new Integer(3));
stack.push(new Integer(8));
int k=1;
while(k<=10) {
for(int i=1;i<=2;i++) {
Integer F1=stack.pop();
int f1=F1.intValue();
Integer F2=stack.pop();
int f2=F2.intValue();
Integer temp=new Integer(2*f1+2*f2);
System.out.println(""+temp.toString());
stack.push(temp);
stack.push(F2);
k++;
}
}
}
}
- 结果截图
2.编写一个程序:将链表中的学生英语成绩单存放到一个树集中,使得按成绩自动排序,并输出排序结果
- 代码实现
import java.util.*;
class Student implements Comparable {
int english=0;
String name;
Student(int english,String name) {
this.name=name;
this.english=english;
}
public int compareTo(Object b) {
Student st=(Student)b;
return (this.english-st.english);
}
}
public class E2 {
public static void main(String args[]) {
List<Student> list=new LinkedList<Student>();
int score []={100,76,45,99,77,88,75,79};
String name[]={"一文","李悦","江流","胡克","魏凡","周平","赵剑","魏派"};
for(int i=0;i<score.length;i++){
list.add(new Student(score[i],name[i]));
}
Iterator<Student> iter=list.iterator();
TreeSet<Student> mytree=new TreeSet<Student>();
while(iter.hasNext()){
Student stu=iter.next();
mytree.add(stu);
}
Iterator<Student> te=mytree.iterator();
while(te.hasNext()) {
Student stu=te.next();
System.out.println(""+stu.name+" "+stu.english);
}
}
}
- 结果截图
3.有10个U盘,有两个重要的属性:价格和容量,编写一个应用程序,使用TreeMap<K,V>
类,分别按照价格和容量排序输出10个U盘的详细信息。
- 代码实现
import java.util.*;
class UDiscKey implements Comparable {
double key=0;
UDiscKey(double d) {
key=d;
}
public int compareTo(Object b) {
UDiscKey disc=(UDiscKey)b;
if((this.key-disc.key)==0)
return -1;
else
return (int)((this.key-disc.key)*1000);
}
}
class UDisc{
int amount;
double price;
UDisc(int m,double e) {
amount=m;
price=e;
}
}
public class E3 {
public static void main(String args[ ]) {
TreeMap<UDiscKey,UDisc> treemap= new TreeMap<UDiscKey,UDisc>();
int amount[]={2,4,8,16,32};
double price[]={32,50,64,128};
UDisc UDisc[]=new UDisc[4];
for(int k=0;k<UDisc.length;k++) {
UDisc[k]=new UDisc(amount[k],price[k]);
}
UDiscKey key[]=new UDiscKey[4] ;
for(int k=0;k<key.length;k++) {
key[k]=new UDiscKey(UDisc[k].amount);
}
for(int k=0;k<UDisc.length;k++) {
treemap.put(key[k],UDisc[k]);
}
int number=treemap.size();
Collection<UDisc> collection=treemap.values();
Iterator<UDisc> iter=collection.iterator();
while(iter.hasNext()) {
UDisc disc=iter.next();
System.out.println(""+disc.amount+"G "+disc.price+"元");
}
treemap.clear();
for(int k=0;k<key.length;k++) {
key[k]=new UDiscKey(UDisc[k].price);
}
for(int k=0;k<UDisc.length;k++) {
treemap.put(key[k],UDisc[k]);
}
number=treemap.size();
collection=treemap.values();
iter=collection.iterator();
while(iter.hasNext()) {
UDisc disc=iter.next();
System.out.println(""+disc.amount+"G "+disc.price+"元");
}
}
}
- 结果截图
4.编程题目码云链接
20165202 week10课下补做的更多相关文章
- 20165202 week4课下补做
1.相关知识点的总结 编程实现1!+2!+3!+... + N!的功能,N由命令行传入,比如类名为SumofRecur, java SumofRecur 8 给出1!+2!+3!+... + 8!的值 ...
- 课上补做:用C语言编程实现ls命令
课上补做:用C语言编程实现ls命令 一.有关ls ls :用来打印当前目录或者制定目录的清单,显示出文件的一些信息等. ls -l:列出长数据串,包括文件的属性和权限等数据 ls -R:连同子目录一同 ...
- 20175312 2018-2019-2 《Java程序设计》第6周课下选做——类定义
20175312 2018-2019-2 <Java程序设计>第6周课下选做--类定义 设计思路 1.我觉得Book其实就是一个中转的作用,由测试类Bookself通过Book输入数据,然 ...
- 2017-2018-2 20165312 课下选做 MySort
2017-2018-2 20165312 课下选做 MySort 题目描述 模拟实现Linux下Sort -t : -k 2的功能,参考 Sort的实现. import java.util.*; pu ...
- 课下选做作业实现mypwd
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业实现mypwd 要求 学习pwd命令 研究pwd实现需要的系统调用(man -k; grep),写出伪代码 ...
- 课下选做作业MyOD
2019-2020-1 20175227 <信息安全系统设计基础> 课下选做作业MyOD 要求 复习c文件处理内容 编写myod.c 用myod XXX实现Linux下od -tx -tc ...
- 课下选做作业MySort
20175227张雪莹 2018-2019-2 <Java程序设计> 课下选做作业MySort 要求 注意:研究sort的其他功能,要能改的动代码,需要答辩 模拟实现Linux下Sort ...
- HASH方法课下补分博客
课堂要求:利用除留余数法为下列关键字集合的存储设计hash函数,并画出分别用开放寻址法和拉链法解决冲突得到的空间存储状态(散列因子取0.75)关键字集合:85,75,57,60,65,(你的8位学号相 ...
- 课下必做MyCP
一.Linux的CP命令 Linux 的cp命令 功能: 复制文件或目录 说明: cp指令用于复制文件或目录,如同时指定两个以上的文件或目录,且最后的目的地是一个已经存在的目录,则它会把前面指定的所有 ...
随机推荐
- ONVIF学习-ONVIF开发框架搭建(C++)
第一步.下载gsoap 从gsoap官网(http://www.genivia.com/products.html#notice)下载最新版gsoap(博主用的是gsoap_2.8.45).gsoap ...
- Windows下编译live555源码
Windos下编译live555源码 环境 Win7 64位 + VS2012 步骤 1)源码下载并解压 在官网上下载最新live555源码,并对其进行解压. 2)VS下建立工程项目 新建Win32项 ...
- hadoop HA + kerberos HA集群搭建问题和测试总结
1. 常见问题 (1)hostname设置问题.vi /etc/sysconfig/network (2)集群/etc/hosts没有统一. (3)yarn slave需要单独启动../sbin/y ...
- BZOJ3150: [Ctsc2013]猴子
传送门 这题好神啊..好神啊.. 首先得到简单的DP方程: $f_{\{ i \}}=\frac{\sum_{i \ne j} f_ {\{ i,j \}} \times P_{(i,j)}}{N-1 ...
- 20145314郑凯杰 《Java程序设计》第1周学习总结
20145314郑凯杰 <Java程序设计>第1周学习总结 教材学习内容总结 跟着教材的顺序开始总结我学过的内容: 1.三大平台 JAVA SE ,JAVA EE,JAVA ME 从毕向东 ...
- 【Semantic segmentation】Fully Convolutional Networks for Semantic Segmentation 论文解析
目录 0. 论文链接 1. 概述 2. Adapting classifiers for dense prediction 3. upsampling 3.1 Shift-and-stitch 3.2 ...
- 【卷积神经网络】对BN层的解释
前言 Batch Normalization是由google提出的一种训练优化方法.参考论文:Batch Normalization Accelerating Deep Network Trainin ...
- Java实习二
链表(java实现) Link.java public class Link{ private Node first; public Link(){ this.first = null; } //判断 ...
- Docker 学习记录
docker logs 查看日志 docker logs 容器id docker logs -f 容器id 这次命令后面添加了一个新的标识 -f. 和 tail -f 类似, docker logs ...
- 编译binutil包报错 error: array type has incomplete element type extern const struct relax_type md_relax_table[];
安装lfs时编译binutils出错: ../../sources/binutils-2.15.91.0.2/gas/config/tc-i386.h:457:32: error: array typ ...