数据结构实验报告(2012级)

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

《数据结构》实验报告

专业_____________

年级_____________

学号_____________

学生姓名_____________

指导老师_____________

华中师范大学信息管理系编

I 实验要求

1.每次实验中有若干习题,每个学生至少应该完成其中的两道习题。

2.上机之前应作好充分的准备工作,预先编好程序,经过人工检查无误后,才能上机,以提高上机效率。

3.独立上机输入和调试自己所编的程序,切忌抄袭、拷贝他人程序。

4.上机结束后,应整理出实验报告。书写实验报告时,重点放在调试过程和小节部分,总结出本次实验中的得与失,以达到巩固课堂学习、提高动手能力的目的。

II 实验内容

实验一线性表

【实验目的】

1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。

2.通过编程、上机调试,进一步理解线性表的基本概念,熟练运用C语言实现线性表基本操作。

3.熟练掌握线性表的综合应用问题。

【实验内容】

1.一个线性表有n个元素(n

2. 从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。

要求:

①指定的值x由键盘输入;

②程序能处理空链表的情况。

3.设有头结点的单链表,编程对表中的作一值只保留一个结点,删除其余值相同的结点。

要求:

①该算法用函数(非主函数)实现;

②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。

要求:

①该算法用函数Reverse(head,p)实现,其中head为表头指针,p指向要交换的结点;

②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。

5.设有一个单链表,编写能够完成下列功能的算法:

①找出最小值的结点,且打印该数值;

②若该数值是奇数,则将其与直接后继结点交换;

③若该数值是偶数,则将其直接后继结点删除。

要求:

编写主函数验证算法的正确性。

6.在一链表中,已知每个结点含有三个域:data、next和prior,其中prior域为空,设计一个算法,使每个结点的prior指向它的前驱结点,形成双向循环链表。

要求:

①建立一个结点中含有三个域的单链表;

②在主函数中调用此算法,构成双向循环链表;

③在主函数中利用正向和逆向两种方式输出链表中的数据,验证算法的正确性。

7.用链表建立通讯录。通讯录内容有:姓名、通讯地址、电话号码。

要求:

①通讯录是按姓名项的字母顺序排列的;

②能查找通讯录中某人的信息;

提示:

可用链表来存放这个通讯录,一个人的信息作为一个结点。成链的过程可以这样考虑:先把头结点后面的第一个数据元素结点作为链中的首结点,也是末结点。从第二个数据开始逐一作为‘工作结点’,需从链表的首结点开始比较,如果‘工作结点’的数据比链中的‘当前结点’的数据小,就插在其前面。否则,再看后面是否还有结点,若没有结点了就插在其后面成为末结点;若后面还有结点,再与后面的结点逐一比较处理。

【实验报告】

实验二堆栈与队列

【实验目的】

1.学习如何使用C语言实现堆栈与队列。

2.熟悉堆栈与队列的基本操作及应用。

【实验内容】

1.现有一顺序循环队列,其结构描述为:

# define MAX 100

typedef struct

{ ElemType queue[MaxQueueSize];

int front; // 队头指针

int count; // 计数器

}QueueType;

要求:

①设计队列的几种几种操作:初始化、进队、出队、取队头元素和判断队列是否非空。

②编写一个主函数进行测试。

2.已知Q是一个非空队列,S是一个空栈。编写算法实现:将队列Q中的所有元素逆置。

要求:

①调用堆栈和队列的操作函数实现该算法。

②编写一个主函数进行测试。

3.设计一个算法,将计算机产生的n个随机数分为奇数、偶数两组,并将它们分别压入两个栈中,然后在屏幕上输出。

4.编写一个程序,反映病人到医院看病排队看医生的情况。在病人排队过程中,主要重复两件事:

①病人到达诊室,将病历交给护士,排到等候队列中候诊。

②护士从等待队列中取出下一个病人的病历,该病人进入诊室就诊。

要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下:

①排队──输入排队病人的病历号,加入到病人排队队列中;

②就诊──病人排队队列中最前面的病人就诊,并将其从候诊队列中删除;

③查看排队──从队首到队尾列出所有的排队病人的病历号;

④不再排队,余下依次就诊──从队首到队尾列出所有的排队病人的病历号,并退出运行;

⑤下班──退出运行。

【实验报告】

实验三串

【实验目的】

1.掌握串的基本运算。

2.掌握有关串的比较、复制和转换等操作的实现。

3.熟悉串的有关应用问题。

【实验内容】

1.设计一个算法,统计输入字符串中各个不同字符出现的频度。设字符串中的合法字符为‘A’~‘Z’这26个字母和‘0’~‘9’这10个数字(串的存储结构自行选择)。

2.已知字符串S1中存放一段英文,写出算法format(S1,S2,S3,n),将其按给定的长度n格式化成两端对齐的字符串S2,其多余的字符送S3(即将字符串S1拆分成字符串S2和字符串S3,要求字符串S2长度为n且首尾字符不得为空格字符)。

3.输入一篇短文,统计其中所出现的单词的频率(单词间以空格隔开)。

4.采用动态顺序结构存储串,编写算法:求用户输入串S中出现的第一个最长重复子串的下标和长度。一个字符串中重复最长的部分,比如说有如下字符串:

abcdbcdbcb

对于这个字符串最长的重复子串为bcdbc。

相关文档
最新文档