数据结构 顺序表,链表源代码

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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(;ilast+1;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;

相关文档
最新文档