数据结构 顺序表,链表源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淮海工学院计算机科学系实验报告书
课程名:《数据结构》
题目:线性表数据结构试验
班级:软件081
学号:*********
*名:***
线性表实验报告要求
1目的与要求:
1)掌握线性表数据结构的基本概念和抽象数据类型描述;
2)熟练掌握线性表数据结构的顺序和链式存储存表示;
3)熟练掌握线性表顺序存储结构的基本操作算法实现;
4)熟练掌握线性表的链式存储结构的基本操作算法实现;
5)掌握线性表在实际问题中的应用和基本编程技巧;
6)按照实验题目要求独立正确地完成实验内容(提交程序清单及相关实验数据与运行结果);
7)认真书写实验报告,并在试验后的第三天提交电子(全部由学委打包提交)和纸质(每班每次5份,学委安排)。
2实验内容或题目
一、顺序表的基本操作实现实验
要求:数据元素类型ElemType取整型int。按照顺序存储结构实现如下算法(各算法边界条件和返回结果适当给出):
1)创建任意整数线性表(即线性表的元素值随机在键盘上输入),长度限定在25之内;
2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值);
3)在线性表中查找第i个元素,并返回其值;
4)在线性表中第i个元素之前插入一已知元素;
5)在线性表中删除第i个元素;
6)求线性表中所有元素值(整数)之和;
二、链表(带头结点)基本操作实验
要求:数据元素类型ElemType取字符型c har。按照动态单链表结构实现如下算法(各算法边界条件适当给出):
1)按照头插法创建一个带头结点的字符型单链表(链表的字符元素从键盘输入),长度限定在10之内;
2)打印(遍历)该链表(依次打印出表中元素值,注意字符的输入顺序与链表的结点顺序);
3)在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE;
4)在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE;
5)在链表中按照有序方式插入一已知字符元素;
6)在线性表中删除第i个结点;
7)计算链表的长度。
3实验步骤与源程序
(1)顺序表
#include
#include
#include
#define maxsize 25
int length; //表长
// 顺序表结构定义
struct seqlist
{
int elem[maxsize]; //线性表占用的数组空间
int last; //下标,等于位序减1
}seqList;
// 遍历函数
void show (seqlist *p)
{
int i=0;
for(;i
{cout<elem[i]< }; // 插入函数 int insert(seqlist *p) // i位置 j插入的数 { int i; int j; int flag=1; cout<<"Input the position and the value: "< while(flag) { cin>>i>>j; if(i<1||i>length) cout<<"The wrong position! Input again: "< else flag=0; } int pos=p->last; for(;pos>=i;pos--) {p->elem[pos+1]=p->elem[pos];} p->elem[i-1]=j; p->last++; return 0; }; // 查找函数 int find(seqlist *p) { int i; int flag=1; cout<<"Input the position you want to search: "< while(flag) { cin>>i; if(i<1||i>length) cout<<"The wrong position! Input again: "< else flag=0; } cout<elem[i-1]< return 0; }; // 删除函数 int del(seqlist *p) { int i; int flag=1; cout<<"Input the position you want to delete: "< { cin>>i; if(i<1||i>length) cout<<"The wrong position! Input again: "< else flag=0; } for(;i<=length;i++) {p->elem[i]=p->elem[i];} p->last--; return 0; }; // 求和函数 int sum(seqlist *p) { int i=0; int s=0; for(;i<=p->last;i++) {s+=p->elem[i];} cout< return 0;