线性表的抽象数据类型的实现试验报告

上传人:博****1 文档编号:560315157 上传时间:2022-11-30 格式:DOC 页数:20 大小:148KB
返回 下载 相关 举报
线性表的抽象数据类型的实现试验报告_第1页
第1页 / 共20页
线性表的抽象数据类型的实现试验报告_第2页
第2页 / 共20页
线性表的抽象数据类型的实现试验报告_第3页
第3页 / 共20页
线性表的抽象数据类型的实现试验报告_第4页
第4页 / 共20页
线性表的抽象数据类型的实现试验报告_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《线性表的抽象数据类型的实现试验报告》由会员分享,可在线阅读,更多相关《线性表的抽象数据类型的实现试验报告(20页珍藏版)》请在金锄头文库上搜索。

1、数据结构实验报告CH IN A THREE GORGES UNIVERSITY实验名称:线性表的抽象数据类型的实现学号:2011129127姓名:刘瑞奇指导老师:解德祥计算机与信息学院实验1线性表的抽象数据类型的实现实验目的1. 掌握线性表的顺序存储结构和链式存储结构;2. 熟练掌握顺序表和链表基本算法的实现;3. 掌握利用线性表数据结构解决实际问题的方法和基本技巧;4. 按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程序清单及及相关实验数据与运行结果);5. 按时提交实验报告。实验环境计算机、C语言程序设计环境实验学时2学时,选做实验。实验内容一、顺序表的基本操作实现实验要

2、求:数据元素类型 ElemType取整型int。按照顺序存储结构实现如下算法(各算法边界 条件和返回结果适当给出): 创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在20之内; 打印(遍历)该线性表(依次打印出表中元素值); 在线性表中查找第i个元素,并返回其值; 在线性表中第i个元素之前插入一已知元素; 在线性表中删除第i个元素; 求线性表中所有元素值(整数)之和;实验步骤C源程序代码/*file:seqlist.cpp*/#in clude#in clude#i nclude#defi ne size 20#define elemtype intstruct seqlis

3、t elemtype elemsize;int last;;void menu()printf(n);prin tf(n0.退出操作);prin tf(n1.建立数据类型为整形的顺序表(长度小于20).);prin tf(n2.打印线性表);printf(n3.在线性表中查找第i个元素,并返回其值.);printf(n4.在线性表中第i个元素之前插入一已知元素.);prin tf(n5.在线性表中删除第 i个元素);prin tf(n6.求线性表中所有元素值(整数)之和 );prin tf(n7.初始化n);void in s(seqlist *L)L-last=-1;void creat(s

4、eqlist *L) int i=0;elemtype j;printf(请输入线性表元素(-1结束):);sca nf(%d,&j);while(j!=-1)L-elemi+=j; L-last+;if(isize-1) break;sca nf(%d,&j);void pri nt(seqlist *L) int i;printf(顺序表中元素为:);for(i=0;ilast;i+)prin tf(%dt,L-elemi);int fin d(seqlist *L,i nt i)if(iL-last+1) return 0;else return(L-elemi-1);int in se

5、rt(seqlist *L,i nt i,i nt x) int j;return 0;if(L-last+1=size|iL-last+2) L-last+;for(j=L-last;j=i-1;j-)L-elemj+1=L-elemj;L-elemi-1=x;return 1;int del(seqlist *L,i nt i) int e,j;if(L-last=-1|iL-last+1)return 0;elsee=L-elemi-1;for(j=i;jlast+1;j+)L-elemj-1=L-elemj;L-last-; return 1;int sum(seqlist *L) i

6、nt i=0,s=0;if(L-last=-1) return 0;for(i=0;ilast;i+) s+=L-elemi; return s;int isempty(seqlist *L)if(L-last=-1)return 1;else retur n 0;void mai n() int i,cz,e; elemtype date;seqlist L;menu();printf(请输入你要执行的操作的序号:”);i=sca nf(%d,&cz);while(1) if(!i) printf(只能输入数值);else break;prin tf(n再输入一次:);rewi nd(std

7、i n);i=sca nf(%d,&cz);while(cz) switch(cz) case 1:if(isempty (&L)in s(&L);creat (&L);n);else printf(表已经存在,先清空再进行此操作!break;case 2:if(isempty(&L)printf(” 表为空 n);elseprint(&L);break;case 3:printf(”输入待查找元素的位置:n);sca nf(%d,&i);if(fin d(&L,i)printf(查找的第 %d 个元素为 %dn,i,find(&L,i);elseprintf(查找位置错误n);break;c

8、ase 4:printf(请输入要插入的元素及位置:n);sca nf(%d, &date);sca nf(%d,&i);if(i nsert(&L,i,date)printf(插入元素成功!n);else printf(插入位置不合法或栈已满!n);break;case 5:printf(请输入要删除元素的位置n);sca nf(%d,&i); e=L.elemi-1;if(del(&L,i)printf(”删除第%d个值为%d的元素n,i,e);printf(” 删除成功 n);Else printf(删除位置不合法或表已空n); break;case 6:if(isempty (&L)p

9、rintf(表已空!n);else printf(线性表中所有元素值(整数)和:%dn,sum(&L);break;case 7:ins(&L);break;default:printf(无此操作!n);break;menu();printf(请输入你要执行的操作的序号:”);i=sca nf(%d,&cz);while(1) if(!i)printf(n 只能输入数值);else break;prin tf(n 再输入一次:”);rewi nd(stdi n); i=sca nf(%d,&cz);测试数据与实验结果7.初始化Word资料【素 值一 苴知回已兀M 有-的 :查第-行 -类表口

10、口 口 口 -执 岀立專线线线始入 退建打聿在求常返一并入g.rTr 畫刖MS 石一0 1 2 3 4-56 7请強入您黑执任的操作的序号汕请输入线程表元素-1结束江2 3 4 5 & 7 8 9 1911 12 13 14 15 16 17 18 19 2D T2打印櫛陋肺按乍砺号唱I瞬表中猛力:12345 t ?8910111213141516171819 鯛3.查找2查找的影个元素为24. 插入不合法长度超过20藏舞癩聽訐21 21祐入位畫不合法或栈已满?5. 删除然后打印I冃;删fflO駁镰嘶严蠶芻个值为泗的元素事8川確章珂捷恒圧序号说颗序養申兀f为珂235678?1011121114

11、151617I 曰1?4.插入合法畛20 20_插人兀素成功-号泊就伽附断号唱 騙中戏加239io11 is ia19跚6.求和456?14 IS It 1718=219二、链表(带头结点)基本操作实验要求:数据元素类型ElemType取字符型char。按照动态单循环链表结构实现如下算法(各算法边界条件适当给出): 创建任意字符型有序(递增排序)单循环链表(即链表的字符元素随机在键 盘上输入),长度限定在15之内; 打印(遍历)该链表(依次打印出表中元素值); 在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE; 在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返

12、回 FALSE; 在链表中按照有序方式插入一已知字符元素; 在线性表中删除第i个结点; 计算链表的长度。实验步骤C源程序代码#in clude#in clude#in clude#defi ne elemtype char#defi ne size 15static int n=0;typedef struct Nodeelemtype data;struct Node * n ext;Node,*li nklist;void in it(li nklist *L)*L=(li nklist)malloc(sizeof(Node);(*L)- next=*L;n=0;void creat(li nklist L)int i=0,j;Node *s,*r;elemtype csize,t;r=L-n ext;printf(请输入字符型元素(最多15个,输入字符 结束):);scan f(%s,c);while(ci!=)n+;i+;i=0;for(i=0;i n;i+)for(j=i;j n-i-1;j+)if(cjcj+1)t=cj;cj=cj+1;cj+1=t;for(i=0;idata=

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

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