线性表的抽象数据类型的实现实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
实验名称:线性表的抽象数据类型的实现
学号:2011129127
姓名:刘瑞奇
指导老师:解德祥
计算机与信息学院
实验1线性表的抽象数据类型的实现
实验目的
1.掌握线性表的顺序存储结构和链式存储结构;
2.熟练掌握顺序表和链表基本算法的实现;
3.掌握利用线性表数据结构解决实际问题的方法和基本技巧;
4.按照实验题目要求独立正确地完成实验内容(编写、调试算法程序,提交程
序清单及及相关实验数据与运行结果);
5.按时提交实验报告。
实验环境
计算机、C语言程序设计环境
实验学时
2学时,选做实验。
实验内容
一、顺序表的基本操作实现实验
要求:数据元素类型ElemType取整型int。按照顺序存储结构实现如下算法(各算法边界条件和返回结果适当给出):
①创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在
20之内;
②打印(遍历)该线性表(依次打印出表中元素值);
③在线性表中查找第i个元素,并返回其值;
④在线性表中第i个元素之前插入一已知元素;
⑤在线性表中删除第i个元素;
⑥求线性表中所有元素值(整数)之和;
实验步骤
C源程序代码
/*file:seqlist.cpp*/
#include
#include
#include
#define size 20
#define elemtype int
struct seqlist
{ elemtype elem[size];
int last;
};
void menu()
{ printf("\n..........................................");
printf("\n0.退出操作................................");
printf("\n1.建立数据类型为整形的顺序表(长度小于20).");
printf("\n2.打印线性表..............................");
printf("\n3.在线性表中查找第i个元素,并返回其值.....");
printf("\n4.在线性表中第i个元素之前插入一已知元素...");
printf("\n5.在线性表中删除第i个元素.................");
printf("\n6.求线性表中所有元素值(整数)之和........");
printf("\n7.初始化..................................\n");
}
void ins(seqlist *L)
{L->last=-1;}
void creat(seqlist *L)
{ int i=0; elemtype j;
printf("请输入线性表元素(-1结束):");
scanf("%d",&j);
while(j!=-1)
{ L->elem[i++]=j; L->last++;
if(i>size-1) break;
scanf("%d",&j);
}
}
void print(seqlist *L)
{ int i;
printf("顺序表中元素为:");
for(i=0;i<=L->last;i++)
printf("%d\t",L->elem[i]);
}
int find(seqlist *L,int i)
{ if(i<1||i>L->last+1) return 0;
else return(L->elem[i-1]);
}
int insert(seqlist *L,int i,int x)
{ int j;
if(L->last+1==size||i<1||i>L->last+2) return 0;
L->last++;
for(j=L->last;j>=i-1;j--)
L->elem[j+1]=L->elem[j];
L->elem[i-1]=x;
return 1;
}
int del(seqlist *L,int i)
{ int e,j;
if(L->last==-1||i<1||i>L->last+1)
return 0;
else
e=L->elem[i-1];
for(j=i;j<=L->last+1;j++)
L->elem[j-1]=L->elem[j];
L->last--; return 1;
}
int sum(seqlist *L)
{ int i=0,s=0;
if(L->last==-1) return 0;
for(i=0;i<=L->last;i++) s+=L->elem[i];
return s;
}
int isempty(seqlist *L)
{ if(L->last==-1)
return 1;
else return 0;
}
void main()
{ int i,cz,e; elemtype date; seqlist L;
menu();
printf("请输入你要执行的操作的序号:");
i=scanf("%d",&cz);