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

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

数据结构实验报告

实验名称:线性表的抽象数据类型的实现

计算机与信息学院

实验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);

while(1)

{ if(!i) printf("只能输入数值");

else break;

printf("\n再输入一次:"); rewind(stdin);

i=scanf("%d",&cz);

}

while(cz)

相关文档
最新文档