You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
6 years ago | |
|---|---|---|
| .. | ||
| AlgPerf.h | 6 years ago | |
| Benchmark.cpp | 6 years ago | |
| Benchmark.h | 6 years ago | |
| CMakeLists.txt | 6 years ago | |
| LinearList.h | 6 years ago | |
| LinkedList.h | 6 years ago | |
| PerfCounter.h | 6 years ago | |
| Uniquify.txt | 6 years ago | |
| Utilities.cpp | 6 years ago | |
| Utilities.h | 6 years ago | |
| hw3_LinkedListTest.cpp | 6 years ago | |
| readme.txt | 6 years ago | |
| readme2.txt | 6 years ago | |
readme.txt
数据结构 作业3 2020年春 目标:本次作业练习单链表(注:本作业所涉及的单链表均带头结点),体会数据结构课程的学习目标。 下载hw3.rar文件到你的电脑中。 开始: 第一步:解压hw3.rar,得到hw3文件夹。在hw3文件夹中,包含LinearList.h、LinkedList.h、AlgPerf.h和hw3_LinkedListTest.cpp文件。 LinearList.h实现线性表基类。 LinkedList.h头文件实现单链表数据结构。其中包含(你的)Uniquify()算法实现剔除有序单链表的重复元素,Uniquify(int &,int &,int &)算法实现剔除有序单链表的重复元素的同时,分别合计并返回算法中元素移动总次数、元素值比较总次数和辅助空间字节总数,Merge(LinkNode<T>*,LinkNode<T>*)算法实现将两个有序单链表归并到当前操作对象*this单链表中。 AlgPerf.h文件获取并输出算法的性能数据,包括测试数据的生成、所耗时间的统计等。具体测试方法是分别对随机生成的大小为 5 - 600 (间隔为 5)的200个数组进行操作,累加200次所耗的时间、元素移动次数、元素值比较次数和辅助空间字节数。程序会自动输出测试数据统计结果在Uniquify.txt中,请你将其中的数据分别粘贴在 https://docs.qq.com/sheet/DTGFPa01Ccm9PelFQ 中四个汇总表你的姓名位置相应处(耗费总时间、元素移动总次数、元素移动总次数、辅助空间总字节数)。 hw3_LinkedListTest.cpp源文件中的main()函数实现对单链表类的测试。其中前半部分测试单链表类,帮助掌握基本的单链表使用。后半部分是作业测试,第一部分实现测试Uniquify()操作的功能测试和高效性测试,第二部分实现测试有序表归并Merge()操作的功能测试。 第二步:建立一个空项目,添加LinearList.h、LinkedList.h、AlgPerf.h和hw3_LinkedListTest.cpp文件到项目中。 第三步:LinkedList.h文件实现单链表类,欲增加以下函数功能,请你添加代码实现以下任务,并完成测试: 任务1、实现剔除有序单链表中的重复元素。要求有序单链表的每个结点被访问一次,且仅被访问一次。 任务1.1、Uniquify( )函数实现剔除有序单链表中重复元素。分析时间复杂度和空间复杂度。 例如,有序线性表L=<9,9,9,9,19,19,19,19,19,20,20,20,30,30,30,30>,执行Uniquify( )操作后L=<9,19,20,30>。 任务1.2、Uniquify(int &,int &,int &) )函数实现剔除有序单链表的重复元素的同时,分别合计并返回算法性能数据,包括算法中元素移动总次数、元素值比较总次数和辅助空间字节总数。 性能统计说明: 算法中如果结点的data域或link域被改变,则movenum需累加一次。 凡出现两个结点的数据域的值比较大小,则compnum需累加一次。 凡出现定义辅助变量或数组,则bytesnum需累加相应的字节数。C++中sizeof(LinkNode<T>*)为4个字节。 任务2、Merge( )函数实现将两个有序单链表La和lb归并到当前操作对象*this表中,要求La、Lb、*this三个单链表的每个结点被访问一次,且仅被访问一次。分析时间复杂度和空间复杂度。 第四步、编写你自己的readme.txt文件:按照结构体程序设计方法或面向对象程序设计方法 展示你的算法以及设计过程,分析Uniquify()的时间复杂度和空间复杂度,Merge()函数的时间复杂度和空间复杂度。 第五步、压缩 .h+.cpp+.exe+.dsw/.dsp+readme.txt+你的测试数据.txt 成包(.zip\.rar)。命名规则:班级-序号+姓名+作业1,提交到datastructurecp@163.com。 说明: 1、程序都在Visual Studio 2013 编译通过。 2、鼓励大家多思考多分析,做出自己想要的优化的程序和系统。 3、鼓励大家多查找学习网上资料、程序,并将它们整理、分享到群里。 4、鼓励大家勤交流、勤分享、勤讨论,以设计并实现出优化的程序和系统(但不分享代码!)。