数据结构与算法分析实验

发布 2021-05-02 17:44:28 阅读 8406

教材:电子信息技术专业实验指导书的第2章:

数据结构实验。

本实验课学分:0.5

上课周次:10周- 17周(各个班不同,13)

成绩评定:随课实验,成绩不单独给,但会体现在数据结构与算法分析课程的成绩中,课程总3.5学分,理论课程3学分,实验0.

教材:电子信息技术专业实验指导书的第2章:

数据结构实验。

本实验课学分:0.5

上课周次:10周- 17周(各个班不同,13)

成绩评定:随课实验,成绩不单独给,但会体现在数据结构与算法分析课程的成绩中,课程总3.5学分,理论课程3学分,实验0.

教材:电子信息技术专业实验指导书的第2章:

数据结构实验。

本实验课学分:0.5

上课周次:10周- 17周(各个班不同,13)

成绩评定:随课实验,成绩不单独给,但会体现在数据结构与算法分析课程的成绩中,课程总3.5学分,理论课程3学分,实验0.

5学分。实验成绩体现在:1.

实验程序完成之后的检查。2.实验报告(格式,每人按时交,16周交完报告)。

3.随堂测试(13周-15周,时间不定)。

课程使用编程语言:visual c++或tc,需要同学们自己再重温一下c语言课本,特别要注意函数调用、指针、结构体部分的内容。

实验一线性顺序表的插入删除(8课时)-教材实验1

实验目的:学习线性顺序表的建立与各个操作以及编程语言的熟练掌握。

实验内容:一、 线性顺序表1:

函数调用方式实现建立线性表及线性表的各项功能。

typedef struct list

et alist[maxsize];

int size;

;//一旦定义一个struct list这样的数据结构名称与类型,那么在你的程序里,struct list就象int 一样的意义了。

typedef char et;//定义一个宏,用et代表数据类型char ,这样若要改变数据类型,只需改动这一个地方就可以了。

实现七个函数:

1)置空表:void setnull(struct list *p)

2) 求长度:int length(struct list *p)

3)取表中第i个结点:et get (struct list *p,int i)

4)按值查找:int locate(struct list *p,et x)

5)插入结点:void insert(struct list *p,int i,et x)

6)删除结点:void delete(struct list *p,int i)

7)显示链表:void display(struct list *p)

这样可以直接调用这七个函数来实现顺序表的操作,如实现在屏幕上显示如下内容:(就是说,每个动作都应该在屏幕上有提示)

我的顺序表为:d-> e->a->c->a->b

值为a在表中的位置为:3

位置4的值为:c

删除第二个结点后顺序表:d-> a->c->a->b

删除第二个结点后顺序表:d-> c->a->b

删除第1个结点后顺序表: c->a->b

删除第1个结点后顺序表: a->b

实验二线性链表(8课时)-教材实验2

实验目的:学习线性链表的数据结构与算法实现,继续学习编程,重点掌握单链表、循环单链表的数据结构的建立与各种操作的实现,学习双链表的建立方法。

实验内容:一、 链表的建立与操作1:

和实验一中的线性顺序表的同样方法,用函数调用方式实现建立线性链表及线性链表的各项功能。

链表的数据格式:

struct snode

et data;

struct snode *next;

定义链表的每一个结点:struct snode *s;

struct snode *s,*q;

s=(struct snode *)malloc(sizeof(struct snode));

s->data=x;

q->next=s;

实现七个函数:

1)置空表:void setnull(struct snode **p)

2) 求长度:int length(struct snode **p)

3)取表中第i个结点:et get (struct snode **p,int i)

4)按值查找:int locate(struct snode **p,et x)

5)插入结点:void insert(struct snode **p,int i,et x)

void insert(struct snode **p,et x,int i)

int j=1;

struct snode *s,*q;

s=(struct snode *)malloc(sizeof(struct snode));

s->data=x;

q=*p;if(i==1)

s->next=q;*p=s;}

elsewhile(jnext!=null)

if(j==i-1)

printf("not exist!")

6)删除结点:void delete(struct snode **p,int i)

7)显示链表:void display(struct snode **p)

这样可以直接调用这七个函数来实现链表的操作,如同线性顺序表的d-> e->a->c->a->b一样。

实验三求解迷宫问题(8课时)――教材实验3

一、实验目的:

巩固队列、栈的数据结构形式,掌握其在程序设计中的具体应用;通过迷宫问题的分析,进一步了解程序设计的基本方法,提高解决实际问题的能力。

二、实验内容:耗子走迷宫的古典问题,要求用队列的存储方式、堆栈的存储方式分别实现程序。

首先,用二维数组来表示迷宫,其元素值只有两个。

入口。出口。

几个问题:1、二维迷宫数组的初始化mg[m][n]

2、迷宫中的每个位置(i,j)有8个方向可走,我们要约定每次先走哪个方向,这样程序才有章可循。边缘位置只有3个方向,这样我们给迷宫周围增加一圈围墙,即迷宫数组扩充为mg[m+1][n+1],且边缘全部为1。

3、不同方向对应有不同的坐标变换值,如对(i,j)这个位置来说,有8个方向,定义一个变量v=1~8,对应i=i+zx[v],j=j+zy[v],这样,事先将每个方向上的横坐标、纵坐标增量zx,zy分别用数组给出即可。

4、问题的关键在:如何在走不通的情况下回过头来重新寻找其他方向?队列、栈的存储结构?需要存储哪些数据?

算法与数据结构实验

实验1 adt list 线性表 6学时 问题描述 线性表是典型的线性结构,实现adt list,并在此基础上实现两个集合的交运算和并运算。实验目的 1 掌握线性表的链表存储结构。2 掌握在单链表上基本操作的实现。3 在掌握单链表的基本操作上进行综合题的实现。实验内容及要求 1 要求用带头结点的单链...

算法与数据结构实验

福建农林大学实验报告。系 教研室 计算机专业年级实验课程。姓名学号实验室号计算机号。实验时间指导教师签字成绩。实验四实现fibonacci检索算法 验证性 4学时 一 实验目的和要求。掌握不同的检索方法,并能用高级语言实现检索算法 熟练掌握顺序表和有序表的检索方法,以及静态检索树的构造方法和检索算法...

数据结构与算法实验

计算机科学与技术系。实验报告。专业名称网络系统管理 课程名称数据结构与算法 项目名称堆栈实验 班级 13网络系统管理 学号 1304052010 姓名汪康。同组人员。实验日期。一 实验目的与要求 1 掌握堆栈的两种不同的存储结构。2 掌握应用堆栈表示数据 并进行有关算法设计的方法。二 实验背景 堆栈...