淮海工学院数据结构第一次实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮海工学院计算机科学系实验报告书
课程名:《数据结构》
题目: 线性数据结构试验
班级:软嵌151
学号:2015123352
姓名: 韩吉
线性表实验报告要求
1目得与要求:
1)掌握线性表数据结构得基本概念与抽象数据类型描述;
2)熟练掌握线性表数据结构得顺序与链式存储存表示;
3)熟练掌握线性表顺序存储结构得基本操作算法实现;
4)熟练掌握线性表得链式存储结构得基本操作算法实现;
5)掌握线性表在实际问题中得应用与基本编程技巧;
6)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结
果);
7)按照报告格式与内容要求,认真书写实验报告,并于下周周二前统一提交实验报告电子版文档(每次实验全体同学必须提交实验报告电子版,实验报告文档文件命名方式:姓名+学号+数据结构第X次实验报告)提交给学委,而后由学委以班为单位统一打包(包文件名为:软件14X班-数据结构第X次实验报告)用邮件发给老师;提交纸质报告(每班每次收5份,学委安排,保证每学期每个同学至少提交一次)一起提交给老师。每次提交电子文档时,学委务必统计与上报未交报告人数与具体姓名;凡逾期不交报告者,不再推迟提交,一律按照旷交处理。
8)积极开展实验组组内交流与辅导,严禁直接复制与剽窃她人实验成果,一旦发现严肃处理;
9)上实验课前,要求每个同学基本写好程序,并存储在自己得U盘上,用于实验课堂操作时调试与运行.
2实验内容或题目(在一个主程序中实现全部题目内容)
一、顺序表得基本操作实现实验
要求:数据元素类型ElemType取整型int.按照顺序存储结构实现如下算法:
1)创建任意整数线性表(即线性表得元素值随机在键盘上输入)得顺序存储结构(即顺序表),长度限定在25之内;
2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值);
3)在顺序表中查找第i个元素,并返回其值;
4)在顺序表第i个元素之前插入一已知元素;
5)在顺序表中删除第i个元素;
6)求顺序表中所有元素值(整数)之与;
二、链表(带头结点)基本操作实验
要求:数据元素类型ElemType取字符型char。按照动态单链表结构实现如下算法:
1)按照头插法或尾插法创建一个带头结点得字符型单链表(链表得字符元素从键盘输入),长度限定
在10之内;
2)打印(遍历)该链表(依次打印出表中元素值,注意字符得输入顺序与链表得结点顺序);
3)在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE;
4)在链表中查找与一已知字符相同得第一个结点,有则返回TRUE,否则,返回FALSE;
5)在链表中第i个结点之前插入一个新结点;
6)在线性表中删除第i个结点;
7)计算链表得长度。
3实验步骤与源程序
#include”stdio、h”
#include"stdlib、h”
#include"malloc、h"
#define OK1
#define ERROR 0
#define TURE 1
#define FALSE 0
#defineElemType int
#define MAXSIZE 25
typedef struct
{
ﻩElemType elem[MAXSIZE];
ﻩintlast;
}SeqList;
int GetData(SeqList*L,int i)
{
returnL-〉elem[i—1];
}
int InsList(SeqList *L,int i,ElemType e)
{
int k;
if((i〈1)||(i〉L-〉last+2))
ﻩ{
ﻩprintf("插入位置i值不合法!");
ﻩﻩreturn(ERROR);
ﻩ}
ﻩif(L->last〉=MAXSIZE-1)
ﻩ{
ﻩprintf(”超出了链表得最大范围,无法插入无法插入!”); ﻩreturn(ERROR);
ﻩ}
for(k=L—〉last;k〉=i—1;k——)
L—〉elem[k+1]=L-〉elem[k];
ﻩL-〉elem[i—1]=e;
ﻩL->last++;
return(OK);
}
int DelList(SeqList *L,int i,ElemType *e) {
int k;
ﻩif((i<1)||(i〉L-〉last+1))
{
ﻩprintf("删除位置不在表中,不合法!”);
ﻩreturn(ERROR);
ﻩ}
*e=L->elem[i—1];
ﻩfor(k=i;k〈=L—>last;k++)
ﻩﻩL-〉elem[k-1]=L—〉elem[k];
L—〉last--;
return(OK);
}
int SumList(SeqList *L)
{
ﻩint sum=0;
ﻩfor(int i=0;i〈=L->last;i++)
ﻩ{
ﻩsum+=L—>elem[i];
}
ﻩreturn(sum);
}
void main()
{
SeqList *l;
int p; //要查找得位置
ﻩint *q;
int r;//线性表得长度
ﻩintt;ﻩ//插入得元素
ﻩint s;ﻩ//删除得位置
ﻩint w;//要插入得位置
int i;
ﻩl=(SeqList*)malloc(sizeof(SeqList));
ﻩq=(int*)malloc(sizeof(int));
printf(”请输入线性表得长度:");
ﻩscanf(”%d”,&r);
l—〉last=r-1;
printf("请输入线性表中得各元素值:\n");
for(i=0;i〈=l-〉last;i++)
ﻩ{
ﻩﻩscanf(”%d",&l->elem[i]);
}
ﻩprintf("线性表中所有元素之与就是:%d\n”,SumList(l));ﻩprintf("请输入要查找得位置:ﻩ");
ﻩscanf("%d”,&p);
printf("查找得元素就是:%d\n",GetData(l,p));
printf(”请输入要插入得位置:");
ﻩscanf("%d",&w);
printf("插入得元素就是: ”);