20192319 2019-2020-1 《数据结构及面向对象程序设计》实验六报告
实验六报告
- 课程:《程序设计与数据结构》
- 班级: 1923
- 姓名: 李歆韵
- 学号:20192319
- 实验教师:王志强
- 实验日期:2020年11月5日
- 必修/选修: 必修
1.实验内容
1.链表练习,要求实现下列功能:
通过键盘输入一些整数,建立一个链表;这些数是你学号中依次取出的两位数,再加上今天的时间。打印所有链表元素, 并输出元素的总数。
在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。做完这一步,把你的程序签入源代码控制(git push)。
2.链表练习,要求实现下列功能:
实现节点插入、删除、输出操作;继续你上一个程序,扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;从磁盘读取一个文件,这个文件有两个数字。从文件中读入数字1,插入到链表第 5位,并打印所有数字,和元素的总数。保留这个链表,继续下面的操作。从文件中读入数字2,插入到链表第0位,并打印所有数字,和元素的总数。保留这个链表,并继续下面的操作。从链表中删除刚才的数字1,并打印所有数字和元素的总数。
3.链表练习,要求实现下列功能:
使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;如果你学号是单数, 选择冒泡排序,否则选择选择排序。在排序的每一个轮次中,打印元素的总数,和目前链表的所有元素。
在android上实现实验(1)和(2)
在android平台上实现实验(3)
2.实验过程与结果
1.链表练习,要求实现下列功能:
通过键盘输入一些整数,建立一个链表;这些数是你学号中依次取出的两位数,再加上今天的时间。打印所有链表元素, 并输出元素的总数。
在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。做完这一步,把你的程序签入源代码控制(git push)。
代码:
package LinkedList;
import java.util.*;
import java.io.*;
public class MyLinked_1 {
public static Chain_1 head;
public static int nLiXinyun = 0;
public static Chain_1 reserve1;
public static Chain_1 reserve2;
public static void main(String[] args) throws IOException{
Scanner a = new Scanner(System.in);
String b;
System.out.println("Please input number "+((nLiXinyun+1))+" or input \"over\": ");
b = a.next();
head= new Chain_1(Integer.parseInt(b));
while(!b.equals("over")){
nLiXinyun++;
System.out.println("Please input number "+((nLiXinyun+1))+" or input \"over\": ");
b = a.next();
if (b.equals("over")){
break;
}
Chain_1 temp = new Chain_1(Integer.parseInt(b));
lianjie(head,temp);
}
System.out.println("The initial chain: "+shuchu(head));
System.out.println("The amount of chain: "+nLiXinyun);
}
2.链表练习,要求实现下列功能:
实现节点插入、删除、输出操作;继续你上一个程序,扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器;从磁盘读取一个文件,这个文件有两个数字。从文件中读入数字1,插入到链表第 5位,并打印所有数字,和元素的总数。保留这个链表,继续下面的操作。从文件中读入数字2,插入到链表第0位,并打印所有数字,和元素的总数。保留这个链表,并继续下面的操作。从链表中删除刚才的数字1,并打印所有数字和元素的总数。
代码:
public static void charu(Chain_1 head, int ele, int point){
Chain_1 node = new Chain_1(ele);
Chain_1 head3 = head;
int n =0;
if (point == 0){
node.setNext(head);
MyLinked_1.head = node;
}
else {
while (n != point - 1) {
head3 = head3.getNext();
n++;
}
node.setNext(head3.getNext());
head3.setNext(node);
}
nLiXinyun++;
}
public static void shanchu(Chain_1 head, int point){
Chain_1 head4 = head;
int n = 0;
if (point == 0){
MyLinked_1.head = head.getNext();
}
else {
while (n != point - 1){
head4=head4.getNext();
n++;
}
head4.setNext(head4.getNext().getNext());
}
nLiXinyun--;
}
3.链表练习,要求实现下列功能:
使用冒泡排序法或者选择排序法根据数值大小对链表进行排序;如果你学号是单数, 选择冒泡排序,否则选择选择排序。在排序的每一个轮次中,打印元素的总数,和目前链表的所有元素。
代码:
public static void maopaopaixu(){
Chain_1 temp = MyLinked_1.head;
Chain_1 c1,c2;
int i,j;
if (temp == null || temp.getNext() == null){
System.out.println(shuchu(head));
System.out.println("The amount of chain: "+nLiXinyun);
}
for (i=1;i<nLiXinyun;i++){
for (j=i+1;j<=nLiXinyun;j++){
c1=c2=MyLinked_1.head;
for (int x=1; x<i; x++){
c1 = c1.getNext();
}
for (int y=1; y<j; y++){
c2 = c2.getNext();
}
if (c1.getE1()<c2.getE1()){
int t;
t = c1.getE1();
c1.setE1(c2.getE1());
c2.setE1(t);
}
}
System.out.println(shuchu(head));
System.out.println("The amount of chain: "+nLiXinyun);
}
}
3.其它
链表的实践是本周新学习的内容,主要学习了插入,查找等一系列内容。新内容不断增加,希望老内容也不要遗忘