青岛理工大学数据结构第二次实验报告(共14页).doc
《青岛理工大学数据结构第二次实验报告(共14页).doc》由会员分享,可在线阅读,更多相关《青岛理工大学数据结构第二次实验报告(共14页).doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上青 岛 理 工 大 学数据结构课程实验报告课程名称数据结构班级Abcxxx实验日期2015.9.25姓名Abc学号2014xxxxx实验成绩实验名称顺序表和链表的实现和应用实验目的及要求(1)掌握顺序表的顺序存储方法和基本操作;(2)掌握链表表的链式存储方法和基本操作;(3)了解顺序表和链表的优缺点和适用场合;(3)能够运用顺序表或链表解决问题。实验环境硬件平台:普通的PC机软件平台:Windows 2003操作系统 编程环境:VisualC+实验内容1. 采用递增有序的顺序表表示集合,求解两个集合的交集、并集和差集(1)定义顺序表的存储结构;(2)实现存储递增有序集
2、合的顺序表的建立、求交集、并集和差集等运算;(3)要求算法的时间性能在线性时间复杂度内;(4)和采用无序顺序表所表示的集合的有关运算的时间性能进行比较。2. 采用递增有序的链表表示集合,求解两个集合的交集、并集和差集(1)定义链表的存储结构;(2)实现存储递增有序集合的链表的建立、求交集、并集和差集等运算;(3)要求算法的时间性能在线性时间复杂度内;(4)和采用无序链表所表示的集合的有关运算的时间性能进行比较。3.比较顺序表和链表的优缺点和适用场合算法描述及实验步骤template class SQList/顺序表template class SQListjcb/顺序表的交叉并template
3、 class SQLnode/单链表template class SQLnodejcb/链表的交叉并调试过程及实验结果总结本次试验对于顺序表和链表的优缺点的认识更加深刻。顺序表中进行查找操作时较方便,而链表则适合进行插入和删除运算。顺序表存储密度大,存储空间利用率高;链表插入和删除运算时很方便,使用灵活。求集合的交并差运算用顺序表和链表实现时,顺序表的程序比较好做一点,因为是使用另一个数组C来存储运算结果,所以并没有在数组中进行插入和删除运算,程序较简单;而做链表时遇到了困难,再插入新节点时程序总是不能运行。附录#define TRUE 1#define FALSE 0#define OK 1
4、#define ERROR 0#define INFEASIBLE -1#define OVERLOW -2#include#include#includeusing namespace std;typedef int Status;const int LIST_INIT_SIZE = 100;const int LISTINCREMENT = 10;template class SQList/顺序表private:T*elem;T*newbase;int length;int listsize;public:T* Getelem()return elem;int Getlength()ret
5、urn this-length;SQList()elem = new TLIST_INIT_SIZE;if (!elem)exit(OVERLOW);length = 0;listsize = LIST_INIT_SIZE;Status ListInsert(int i, T e)if (ilength + 1)return ERROR;if (length listsize)newbase = (T*)realloc(elem, listsize + LISTINCREMENT);if (!newbase)exit(OVERLOW);elem = newbase;listsize += LI
6、STINCREMENT;T*p = &elemi - 1;T*q = &elemlength - 1;for (q; q = p; q-)*(q + 1) = *q;*p = e;length+;return OK;Status ListAdd(T e)this-elemthis-length = e;this-length+;return OK;Status ListDelete(int i, T &e)if (i length | i length - 1;for (+p; p = q; p+)*(p - 1) = *p;length-;return OK;Status ListShow(
7、)for (int i = 0; i length; i+)cout elemi endl;return OK;template class SQListjcb/顺序表的交叉并public:void JiaoJi(SQList a, SQList b)SQList h;int *p = a.Getelem();int *q = b.Getelem();if (a.Getlength() b.Getlength()for (int i = 0; i b.Getlength(); i+)for (int j = 0; j a.Getlength(); j+)if (qi = pj)h.ListAd
8、d(qi);break;elsefor (int i = 0; i b.Getlength(); i+)for (int j = 0; j a.Getlength(); j+)if (qi = pj)h.ListAdd(qi);break;if (h.Getlength() = 0)cout 交集为空 endl;elsecout 交集为: endl;h.ListShow();void bingji(SQLista, SQListb)SQListc;int v;int *pa = a.Getelem();int *pb = b.Getelem();int *pc = c.Getelem();wh
9、ile (pa a.Getelem() + a.Getlength() & pb b.Getelem() + b.Getlength()if (*pa = *pb)c.ListAdd(*pa);pa+;elsec.ListAdd(*pb);pb+;if (pa = a.Getelem() + a.Getlength()for (pb; pb b.Getelem() + b.Getlength(); pb+)c.ListAdd(*pb);elsefor (pa; pa a.Getelem() + a.Getlength(); pa+)c.ListAdd(*pa);for (int i = 1;
10、i c.Getlength(); i+)int j = i;int h = j-;if (pcj = pch)c.ListDelete(i + 1, v);cout 并集为: endl;c.ListShow();void chaji(SQLista, SQListb)SQList h;int w;int *p = a.Getelem();int *q = b.Getelem();int *qh = h.Getelem();if (a.Getlength() b.Getlength()for (int i = 0; i b.Getlength(); i+)for (int j = 0; j a.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 青岛 理工大学 数据结构 第二次 实验 报告 14
限制150内