- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构线性表试验报告.
线性表上机实习
1、实验目的
(1)熟悉将算法转换为程序代码的过程。
(2)了解顺序表的逻辑结构特性,熟练掌握顺序表存储结构的C语言描述方法。
(3)熟练掌握顺序表的基本运算:查找、插入、删除等,掌握顺序表的随机存取特性。
(4)了解线性表的链式存储结构,熟练掌握线性表的链式存储结构的C语言描述方法。
(5)熟练掌握线性链表(单链表)的基本运算:查找、插入、删除等,能在实际应用中灵活选择适当的链表结构。
2、实验要求
(1)熟悉顺序表的插入、删除和查找。
(2)熟悉单链表的插入、删除和查找。
实验内容:
顺序表
(1)抽象数据类型定义
typedef struct {
TypeData data[maxsize]; //容量为maxsize的静态顺手表
int n; //顺序表中的实际元素个数
}SeqList; //静态顺序表的定义
在本次实验中,首先建立一个空的静态顺序表,然后键盘输入数据存入表中,然后进入菜单选择界面,通过不同的数字输入,实现对顺序表,删除,插入,查找,显示等操作。
(2)存储结构定义及算法思想
在顺序表结构体的定义中,typedef int TypeData 为整型,存储结构如下:
for(n=0;nm;n++){
cout请输入线性表数据endl;
cinL.data[n]; //顺序将数据存入顺序表
} //其他存储与此类似,都是直接赋值与数组的某一位
插入版块子函数:
void insert(SeqList L) //插入数据
{
int a,b,c,k;
cout请输入插入的数及其插入的位置endl;
cinab;
if(b=0||b(L.n+1)) {cout不能在该位置插入endl; return;} //判断插入位置是否合法
k=L.data[b-1];L.data[b-1]=a; c=L.n; L.n=L.n+1;
while(cb){
L.data[c]=L.data[c-1];c--; //通过循环,实现插入位置后的数据挨个往后移动一位
}
L.data[b]=k;
}
顺序表的插入与删除操作类似,在插入与删除后,都要循环调整后面数组的每一位元素,同时记录数据元素的长度的标示符也要跟着改变。 显示操作是通过循环实现表中第一个元素到最后一个元素的输出,查找操作是直接取数组中的查找位输出。
实验结果与分析
单链表
(1)抽象数据类型定义
typedef struct node{
DataType data; //链表的数据类型
struct node *link; //链表的结点指针
}linknode,*linklist; //定义了结构体linklode和结构体指针linklist
在本次实验中,首先程序自己建立一个空的头结点,通过菜单的功能选择“添加链表数据”可自由添加链表的节点数及元素值。在菜单选择中,有“添加链数据”,“插入链表数据”,“删除链表数据”,“查找链表数据”和“显示链表数据”功能,选择不能的功能选择就能实现不同的操作。其中“添加链表数据”可反复批量输入链表数据。
存储结构定义及算法思想
在单链表中,typedef int DataType;DataType data;定义链表存储数据位整型。存储结构如下:
while(p-link!=NULL){
p=p-link; k++; //首先找到单链表的最后结点(如果是只有头结点
} 的单链表则直接跳过),以便后面接着输入数据
for(int i=0;ia;i++)
{
cout请输入数据endl;
q=(linklist)malloc(sizeof(linknode)); //开辟新的结点空间并转化为linklist指针型
cinq-data;
q-link=p-link; //将前面一个结
文档评论(0)