20192311 《数据结构与面向对象程序设计》实验六报告

20192311 《数据结构与面向对象程序设计》实验六报告
课程:《程序设计与数据结构》
班级: 1923
姓名: 张源峰
学号:20192311
实验教师:王志强
实验日期:2020年11月8日
必修/选修: 必修
1.实验内容
1.链表练习,要求实现下列功能:
通过键盘输入一些整数,建立一个链表;
这些数是你学号中依次取出的两位数。
再加上今天的时间。
例如你的学号是 20172301
今天时间是 2018/10/1, 16:23:49秒
数字就是
20, 17,23,1, 20, 18,10,1,16,23,49
打印所有链表元素, 并输出元素的总数。
在你的程序中,请用一个特殊变量名来纪录元素的总数
,变量名就是你的名字。 例如你叫 张三,
那么这个变量名就是
int nZhangSan = 0; //初始化为 0.
做完这一步,把你的程序签入源代码控制(git
push)。
package java.lang;
import java.util.Scanner;
public class Linked {
public int element;
public int a;
public Linked next = null;
public Linked temp,top;
public Linked(int a) {
this.a = a;
}
public String getnum(){
20192311 《数据结构与面向对象程序设计》实验六报告

课程:《程序设计与数据结构》 班级: 1923 姓名: 张源峰 学号:20192311 实验教师:王志强 实验日期:2020年11月8日 必修/选修: 必修 1.实验内容 1.链表练习,要求实现下列功能: 通过键盘输入一些整数,建立一个链表; 这些数是你学号中依次取出的两位数。 再加上今天的时间。 例如你的学号是 20172301 今天时间是 2018/10/1, 16:23:49秒 数字就是 20, 17,23,1, 20, 18,10,1,16,23,49 打印所有链表元素, 并输出元素的总数。 在你的程序中,请用一个特殊变量名来纪录元素的总数,变量名就是你的名字。 例如你叫 张三, 那么这个变量名就是 int nZhangSan = 0; //初始化为 0. 做完这一步,把你的程序签入源代码控制(git push)。 package java.lang; import java.util.Scanner;

public class Linked { public int element; public int a; public Linked next = null; public Linked temp,top;

public Linked(int a) {
this.a = a;
}

public String getnum(){
String b = Integer.toString(a);
return b;
}

public void setNext(Linked next){
this.next=next;
}

public Linked getNext() {
return next;
}

public void insert(Linked Head, int a, Linked insertnode){
Linked temp = Head;
if(a==0){
insertnode.setNext(temp);
//Head = insertnode;
}
else {
for(int i=0;i<a;i++)
{
top = temp;
temp = temp.getNext();
}
top.setNext(insertnode);
insertnode.setNext(temp);
temp=top;
}
}

public void delete(Linked Head, int a){
Linked temp = Head;
int i=0;
if(a==0)
{
;
}
else {
while(i!=a-1){
temp = temp.getNext();
i++;
}
top = temp;
temp=temp.getNext();
temp=temp.getNext();
top.setNext(temp);
temp=top;
}
}

public void sort(Linked Head, int count){
Linked temp = Head;
Linked c,d;
c = temp;
d = c.getNext();
for(int i = 0;i<count-1;i++)
{
c = temp;
d = c.getNext();
for(int j =0;j<count-i-1;j++)
{
if(c.getElement()<d.getElement())
{
int t;
t = c.getElement();
c.setElement(d.getElement());
d.setElement(t);
}
System.out.println(Head.print(Head));
System.out.println("个数"+count);
c=c.getNext();
d=d.getNext();
}
}
}
public int getElement()
{
return a;
}

public void setElement (int elem)
{
a=elem;
}

public String print(Linked head){
String result="元素:";
for(;😉
{
if(head.getNext()==null){
result +=head.getnum();
break;
}
else
{
result += head.getnum()+",";
head=head.getNext();
}
}
return result;
}
} package java.lang; import java.util.Scanner;

public class shiyan6 { public static void main(String[] args) { int nzyf = 0,j=0; Scanner scan = new Scanner(System.in); System.out.println("Please input numbers(id and time)"); String a = scan.nextLine(); String[] b = a.split(" "); Linked[] list = new Linked[20]; for(int i=0;i<b.length;i++) { int num=Integer.parseInt(b[i]); list[i] = new Linked(num); nzyf++; } Linked head = list[0]; for(int i=0;i<nzyf;i++) { list[j].setNext(list[++j]); } System.out.println("\n"+"元素个数:"+nzyf); System.out.println(head.print(head)); } } 2.链表练习,要求实现下列功能: 实现节点插入、删除、输出操作; 继续你上一个程序, 扩展它的功能,每做完一个新功能,或者写了超过10行新代码,就签入代码,提交到源代码服务器; 从磁盘读取一个文件, 这个文件有两个数字。 从文件中读入数字1, 插入到链表第 5 位,并打印所有数字,和元素的总数。 保留这个链表,继续下面的操作。 从文件中读入数字2, 插入到链表第 0 位,并打印所有数字,和元素的总数。 保留这个链表,并继续下面的操作。 从链表中删除刚才的数字1. 并打印所有数字和元素的总数。 package java.lang; import java.io.*; import java.util.Scanner;

public class shiyan62{ public static void main(String[] args) throws IOException { int i,num; File file = new File("E:\test", "test.txt"); if (!file.exists()) { file.createNewFile(); } Reader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader); String content = bufferedReader.readLine();

String[] ss1 = content.split(" ");
Linked[] list1 = new Linked[2];
for(i=0;i<ss1.length;i++)
{
num=Integer.parseInt(ss1[i]);
list1[i] = new Linked(num);
}

int nzyf = 0,j=0;
Scanner scan = new Scanner(System.in);
System.out.println("Please input numbers(id and time)");
String a = scan.nextLine();
String[] b = a.split(" ");
Linked[] list = new Linked[20];
for(i=0;i<b.length;i++)
{
    num=Integer.parseInt(b[i]);
    list[i] = new Linked(num);
    nzyf++;
}
Linked head = list[0];
for(i=0;i<nzyf;i++)
{
    list[j].setNext(list[++j]);
}
System.out.println("\n"+"元素个数:"+nzyf);
System.out.println(head.print(head));

int q=5;
System.out.println("插入元素1:");
head.insert(head,q-1,list1[0]);
nzyf++;
System.out.println(head.print(head));

System.out.println("插入元素2:");
head.insert(head,0,list1[1]);
head = list1[1];
nzyf++;
System.out.println(head.print(head));

System.out.println("删除元素1:");
head.delete(head,5);
System.out.println(head.print(head));
nzyf--;
System.out.println("元素个数:"+nzyf);

}
} 3.链表练习,要求实现下列功能: 使用冒泡排序法或者选择排序法根据数值大小对链表进行排序; 如果你学号是单数, 选择冒泡排序, 否则选择选择排序。 在排序的每一个轮次中, 打印元素的总数,和目前链表的所有元素。 在(2)得到的程序中继续扩展, 用同一个程序文件,写不同的函数来实现这个功能。 仍然用 nZhangSan (你的名字)来表示元素的总数。 package java.lang; import java.io.*; import java.util.Scanner;

public class shiyan63 { public static void main(String[] args) throws IOException { int i,num; File file = new File("E:\test", "test.txt"); if (!file.exists()) { file.createNewFile(); } Reader reader = new FileReader(file); BufferedReader bufferedReader = new BufferedReader(reader); String content = bufferedReader.readLine();

String[] ss1 = content.split(" ");
Linked[] list1 = new Linked[2];
for(i=0;i<ss1.length;i++)
{
num=Integer.parseInt(ss1[i]);
list1[i] = new Linked(num);
}

int nzyf = 0,j=0;
Scanner scan = new Scanner(System.in);
System.out.println("Please input numbers(id and time)");
String a = scan.nextLine();
String[] b = a.split(" ");
Linked[] list = new Linked[20];
for(i=0;i<b.length;i++)
{
    num=Integer.parseInt(b[i]);
    list[i] = new Linked(num);
    nzyf ++;
}
Linked head = list[0];
for(i=0;i<nzyf ;i++)
{
    list[j].setNext(list[++j]);
}
System.out.println("\n"+"元素个数:"+nzyf );
System.out.println(head.print(head));

System.out.println("学号:20192311,冒泡排序");

head.sort(head,nzyf );
System.out.println(head.print(head));
System.out.println("\n"+"元素个数:"+nzyf );

}
}

posted @ 2020-11-10 14:13  20192311张源峰  阅读(98)  评论(0编辑  收藏  举报