1
0
Fork 0
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.
大蒟蒻 920a583abc
Wed, 11 Mar 2020 19:37:48 +0800
6 years ago
..
AlgPerf.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Benchmark.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Benchmark.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
CMakeLists.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
LinearList.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
LinkedList.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
PerfCounter.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Uniquify.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Utilities.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
Utilities.h Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
hw3_LinkedListTest.cpp Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
readme.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago
readme2.txt Wed, 11 Mar 2020 19:37:48 +0800 6 years ago

readme.txt

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

数据结构 作业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、鼓励大家勤交流、勤分享、勤讨论以设计并实现出优化的程序和系统但不分享代码