欢迎来到天天文库
浏览记录
ID:14395385
大小:68.11 KB
页数:18页
时间:2018-07-28
《完整版12信管实验报告(线性表基本操作)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、管理学院信管专业12(1)班学号3112004734姓名钟臻华协作者:无教师评定_________________实验题目线性表的基本操作实验评分表指导教师评分标准序号评分项目评分标准满分打分1完成度按要求独立完成实验准备、程序调试、实验报告撰写。202实验内容(1)完成功能需求分析、存储结构设计;(2)程序功能完善、可正常运行;(3)测试数据正确,分析正确,结论正确。303实验报告内容齐全,符合要求,文理通顺,排版美观。404总结对实验过程遇到的问题能初步独立分析,解决后能总结问题原因及解决方法,有心得体会。10实验报告一、实验目的与要求1.本实验通
2、过对线性表各种操作的算法设计,理解和掌握线性表的概念、存储结构及操作要求,体会顺序和链式两种存储结构的特点;2.根据操作的不同要求,选择合适的存储结构,设计并实现算法,对算法进行时间复杂度分析,从而达到掌握数据结构的研究方法、算法设计和分析方法的目的。二、实验内容1.分别用顺序表、单链表、单循环链表实现约瑟夫问题的求解,并分析基于不同存储结构算法的时间复杂度。如果采用顺序表实现时,每个元素出环并不执行删除操作,而将相应位置元素值设置为空,但计数时必须跳过值为空的元素,实现这种算法,并分析执行效率。1.顺序表的不删除出环元素算法实现publicclass
3、Josephus3{publicJosephus3(intnumber,intstart,intdistance){//创建约瑟夫环并求解,参数指定环长度,起始位置,计数//采用线性顺序表存储约瑟夫环的元素,元素类型是字符串,构造方法参数指定顺序表的容量SeqListlist=newSeqList(number);Stringa=newString("null");for(inti=0;i4、number+","+start+","+distance+"),");System.out.println(list.toString());inti=start+distance-1;for(intj=1;j5、t(j).equals("null"))System.out.println("被赦免者是"+list.get(j).toString());}}publicstaticvoidmain(String[]args){newJosephus3(5,0,2);}}}运行结果:2.使用单链表实现的算法classJosephus1{publicJosephus1(intnumber,intstart,intdistance){//创建约瑟夫环,参数指定环长度,起始位置,计数//采用单链表存储约瑟夫环的元素,元素类型是字符串,构造方法参数指定单链表的容量Sing6、lyLinkedListlist=newSinglyLinkedList(number);for(inti=0;i7、le(list.length()>1){//多于一个对象时的循环i=(i+distance-1)%list.length();//计数按循环规律变化,单链表可以看作是环形结构(循环单链表)System.out.print("删除"+list.remove(i)+",");System.out.println(list.toString());}System.out.println("被赦免者是"+list.get(0).toString());}publicstaticvoidmain(Stringargs[]){newJosephus1(5,1,2)8、;}}3.书本例题的约瑟夫环的算法publicclassJosephus{publicJose
4、number+","+start+","+distance+"),");System.out.println(list.toString());inti=start+distance-1;for(intj=1;j5、t(j).equals("null"))System.out.println("被赦免者是"+list.get(j).toString());}}publicstaticvoidmain(String[]args){newJosephus3(5,0,2);}}}运行结果:2.使用单链表实现的算法classJosephus1{publicJosephus1(intnumber,intstart,intdistance){//创建约瑟夫环,参数指定环长度,起始位置,计数//采用单链表存储约瑟夫环的元素,元素类型是字符串,构造方法参数指定单链表的容量Sing6、lyLinkedListlist=newSinglyLinkedList(number);for(inti=0;i7、le(list.length()>1){//多于一个对象时的循环i=(i+distance-1)%list.length();//计数按循环规律变化,单链表可以看作是环形结构(循环单链表)System.out.print("删除"+list.remove(i)+",");System.out.println(list.toString());}System.out.println("被赦免者是"+list.get(0).toString());}publicstaticvoidmain(Stringargs[]){newJosephus1(5,1,2)8、;}}3.书本例题的约瑟夫环的算法publicclassJosephus{publicJose
5、t(j).equals("null"))System.out.println("被赦免者是"+list.get(j).toString());}}publicstaticvoidmain(String[]args){newJosephus3(5,0,2);}}}运行结果:2.使用单链表实现的算法classJosephus1{publicJosephus1(intnumber,intstart,intdistance){//创建约瑟夫环,参数指定环长度,起始位置,计数//采用单链表存储约瑟夫环的元素,元素类型是字符串,构造方法参数指定单链表的容量Sing
6、lyLinkedListlist=newSinglyLinkedList(number);for(inti=0;i7、le(list.length()>1){//多于一个对象时的循环i=(i+distance-1)%list.length();//计数按循环规律变化,单链表可以看作是环形结构(循环单链表)System.out.print("删除"+list.remove(i)+",");System.out.println(list.toString());}System.out.println("被赦免者是"+list.get(0).toString());}publicstaticvoidmain(Stringargs[]){newJosephus1(5,1,2)8、;}}3.书本例题的约瑟夫环的算法publicclassJosephus{publicJose
7、le(list.length()>1){//多于一个对象时的循环i=(i+distance-1)%list.length();//计数按循环规律变化,单链表可以看作是环形结构(循环单链表)System.out.print("删除"+list.remove(i)+",");System.out.println(list.toString());}System.out.println("被赦免者是"+list.get(0).toString());}publicstaticvoidmain(Stringargs[]){newJosephus1(5,1,2)
8、;}}3.书本例题的约瑟夫环的算法publicclassJosephus{publicJose
此文档下载收益归作者所有