青岛理工大学数据结构第二次实验报告讲解

上传人:我** 文档编号:116067809 上传时间:2019-11-15 格式:DOC 页数:14 大小:68.50KB
返回 下载 相关 举报
青岛理工大学数据结构第二次实验报告讲解_第1页
第1页 / 共14页
青岛理工大学数据结构第二次实验报告讲解_第2页
第2页 / 共14页
青岛理工大学数据结构第二次实验报告讲解_第3页
第3页 / 共14页
青岛理工大学数据结构第二次实验报告讲解_第4页
第4页 / 共14页
青岛理工大学数据结构第二次实验报告讲解_第5页
第5页 / 共14页
点击查看更多>>
资源描述

《青岛理工大学数据结构第二次实验报告讲解》由会员分享,可在线阅读,更多相关《青岛理工大学数据结构第二次实验报告讲解(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 class SQLnod

3、e/单链表template class SQLnodejcb/链表的交叉并调试过程及实验结果总结本次试验对于顺序表和链表的优缺点的认识更加深刻。顺序表中进行查找操作时较方便,而链表则适合进行插入和删除运算。顺序表存储密度大,存储空间利用率高;链表插入和删除运算时很方便,使用灵活。求集合的交并差运算用顺序表和链表实现时,顺序表的程序比较好做一点,因为是使用另一个数组C来存储运算结果,所以并没有在数组中进行插入和删除运算,程序较简单;而做链表时遇到了困难,再插入新节点时程序总是不能运行。附录#define TRUE 1#define FALSE 0#define OK 1#define ERROR

4、 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()return this-leng

5、th;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 += LISTINCREMENT;T

6、*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()for (int i =

7、 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.ListAdd(qi);break;e

8、lsefor (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();while (pa a.Get

9、elem() + 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; i c.Getlength

10、(); 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.Getlength();

11、j+)if (qi = pj)h.ListAdd(qi);break;for (int i = 0; i h.Getlength(); i+)for (int j = 0; j a.Getlength(); j+)if (qhi = pj)int t = j;t+;a.ListDelete(t, w);break;cout 差集为: endl;a.ListShow();elsefor (int i = 0; i b.Getlength(); i+)for (int j = 0; j a.Getlength(); j+)if (qi = pj)h.ListAdd(qi);break;for (int i = 0; i

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号