- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第二小组实验报告
数据结构试验报告
实验二
线性表的基本操作
实验题目:
专业班级: 计科系1103班 组 长: 王艳愉 2011100323 组 员: 武文辉 2011100310
赵玉鑫 2011100339
孙伟杰 2011100340
2013年4 月 2日
第二小组实验报告
实验报告
实验类型 综合设计__ 实验室 软件实验室一
一、实验题目
线性表的基本操作
二、实验目的和要求
1、掌握线性表的特点
2、掌握线性表的顺序存储结构和链式存储结构的基本运算及应用。
3、尽可能考虑算法的健壮性
4、实验报告中要写出测试数据、错误分析以及收获。
三、需求分析
本演示程序用c++6.0编写,完成单链表和顺序表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。
1、输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数
2、输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置
3、程序所能达到的功能:完成能完成两种存储结构的基本运算以及二级菜单的运用
4、测试数据
1)输入1,存包查看链表1是否为空,若为空,则显示“箱满,请稍侯!”,若非空,则取出一个结点,随机产生一个六位数密码,并将些密码和链表2中所有结点的密码相比较,若有重复,则再随机产生一个新密码,直到无重复;将密码信息写入此结点,并将其插入链表2。
2)输入2,取包,查看链表2是否为空,若为空,则提示“存储箱为空”,若不为空,则提示输入密码,与链表2中的密码进行比较,如果找不到,则提示密码错误,请重新输入。如果找到,则取出一节点并插入到链表1中。
四、 概要设计
为了实现上述程序功能,需要定义
第二小组实验报告
1、单链表的抽象类型如下:
ADT LinkList {
数据对象:D={ai|ai∈IntegerSet,i=0,1,2,?,n,n≥0}
数据关系:R={ai,ai+1|ai,ai+1 ∈D}
基本操作:
creat_linklist(LinkList L1)
操作结果:构造一个空的单链表L.
insert_node(LinkList L,Node *p)
初始条件:单链表L已存在
操作结果:将节点p插入到单链表L中
del_node(LinkList L)
初始条件:单链表L已存在
操作结果:将单链表L中的投节点删除
creat_password()
操作结果:随机产生一个六位数的密码
compare_password(LinkList L,int x)
初始条件:单链表L1已存在,已有一个六位数的密码
操作结果:若密码相同,则返回1,否则返回0
password_compare(LinkList L,int x)
初始条件:单链表L2已存在
操作结果:玉输入密码进行比较,若密码相同,则返回1,否则返回0 }
2、本程序包含三个模块
1)主菜单模块:
协调各函数的调用,实现所要求的功能;
2)取包模块:
实现超市密码箱存包的基本操作;
3)存包模块:
第二小组实验报告
实现超市密码箱取包的基本操作
3、各模块之间的调用关系如下:
主菜单模块
存包模块 取包模块
五、 详细设计
1、链表元素的基本类型
typedef struct node
{
int num; /*箱子的号码*/
int password; /*箱子的密码(满箱有,空箱无)*/ struct node *next; /*指向下个结点的指针*/
}Node,*LinkList;
2、链表的基本操作
creat_linklist(LinkList L1)
//构造一个新的链表,如果没有开辟成功返回错误
LinkList del_node(LinkList L)
//在表头删除一个节点
insert_node(LinkList L,Node *p)
//在表头插入一个节点
int creat_password()
//创建一个密码
int compare_password(LinkList L,int x)
//判断是否予以产生密码重复
LinkList password_compare(LinkList L,int x)
//密码比较
其中部分操作的伪码算法如下:
creat_linklist(LinkList L1)
{
int i;
Node *p,*q;
q=L1;
for(i=0;i12;i++)
{
p=(Node*)malloc(sizeof(Node));
p-password=0;
p-num=i+1;
p-next=q-next;
q-next=p;
q=q-next;
}
文档评论(0)