数据结构实验指导书1-10

2019-02-14 23:50

实验一、线性表基本操作

一、实验目的

1. 了解线性表的逻辑结构特性,以及这种特性在计算机内的两种存储结构。

2. 重点是线性表的基本操作在两种存储结构上的实现;其中以链表的操作为侧重点;并进一步学习结构化的程序设计方法。

二、实验内容

1. 线性表的顺序存储表示(结构)及实现。

参照教材P23页例2-1,编程实现顺序表的存储与操作。 注意几个问题:

(1)关于线性表的顺序存储结构的本质是:在逻辑上相邻的两个数据元素ai-1, ai,在存储地址中也是相邻的,既地址连续。不同的教材有不同的表示,有的直接采用一维数组,这种方法有些过时。有的采用含?动态分配?一维数组的结构体,这种方法比较灵活抽象。在此本书中采用的是含?静态?一维数组和线性表长的结构体: typedef struct

{ DataType list[MaxSize]; /* 一维数组 子域 */ int size; /*顺序表长度 子域 */ }SeqList; /* 顺序存储的结构体类型 */

(2)要求编写一个完整程序,实现顺序表的存储与基本操作。在主函数中采用简单“菜单设计”(do-while循环内嵌套一个 switch结构)技术(参照P75页例3-5)。其中菜单形式为:

********************************************* 1、建立顺序表

2、求当前数据元素个数

3、在i位置插入元素x

4、删除第i个元素,并返回其值 5、取i位置数据元素

6、结束程序运行

*********************************************

请输入您的选择 (1,2,3,4,5,6):

2. 线性表的链表存储表示(结构)及实现。

参照教材P35页例2-3,编程实现单链表(带头结点)的存储与操作。 注意几个问题:

(1)关于线性表的链表存储结构的本质是:在逻辑上相邻的两个数据元素ai-1, ai,在存储地址中可以不相邻,既地址不连续。不同的教材的表示基本是一致的。 typedef struct Node

{ DataType data; /* 数据子域 */ struct Node *next; /* 指针子域 */ }SLNode; /* 结点结构类型 */

(2)要求编写一个完整程序,实现顺序表的存储与基本操作。在主函数中采用简单“菜单设计”(do-while循环内嵌套一个 switch结构)技术(参照P75页例3-5)。其中菜单形式为:

********************************************* 1、建立单链表

2、求当前数据元素个数

3、在i位置插入元素x

4、删除第i个元素,并返回其值 5、取i位置数据元素

6、结束程序运行

*********************************************

请输入您的选择 (1,2,3,4,5,6):

3. 设计循环单链表。 要求:(1)循环单链表的操作包括初始化、求数据元素个数、插入、删除、取数据元素。

(2)设计一测试主函数,实际运行验证所设计的循环单链表的正确性。

实验二、线性表的应用

一、实验目的

1. 深入了解与掌握链表的逻辑结构特性 2. 熟练掌握利用线性解决一些实际应用问题。

二、实验内容

1. 编程实现任意一元多项式加法(教材P47习题2-26)。

2. 单链表合并(可适当参照P43页例2-7)。

(1)创建两个类型为字符型的带头结点的有序单链表L1和L2。

(2)将L1和L2合并到一新链表L3中,使得L3表中元素值也有序,统计L3中元素个数并显示出来。

(3)要求:屏幕上可以显示L1和L2元素列表,以及合并后单链表L3元素列表。

实验三、栈和队列的应用

一、实验目的

1. 掌握栈的存储结构,并能在现实生活中灵活运用。

2. 掌握队列这种数据结构特性及其主要存储结构,并能在现实生活中灵活运用。 3. 了解和掌握递归程序设计的基本原理和方法。

二、实验内容

1、中值表达式求值问题。 要求:(1)先设计一个函数把中缀算术表达式转换为后缀算述表达式。 (2)再设计一个函数实现后缀表达式的求值计算。 (3)设计一个主函数进行测试。

2、利用循环队列模拟舞伴配对问题:

(1)在舞会上,男、女各自排成一队。舞会开始时。依次从男队和女队的队头各出一人配成舞伴。如果两队初始人数不等,则较长的那一队中未配对者等待下一轮舞曲。

(2)假设初始男、女人数及性别已经固定,舞会的轮数从键盘输入。试模拟解决上述舞伴配对问题。

(3)要求:从屏幕输出每一轮舞伴配对名单,如果在该轮有未配对的,能够从屏幕显示下一轮第一个出场的未配对者的姓名。

实验四、串操作

一、实验目的

1. 熟悉串类型的实现方法,了解简单文字处理的设计方法。

2. 熟悉C语言的字符和把字符串处理的原理和方法。 3. 掌握字符串匹配算法

二、实验内容

1、字符串的操作。 基本要求:

(1)字符串采用动态数组存储,建立两个字符串string1和string2,输出两个字符串。 (2)将字符串string2的头n个字符添加到string1的尾部,输出结果。 (3)查找字符串string3在string1中的位置,若string3在string1中不存在,则插入string3在string1的m位置上,输出结果。 测试数据:

(1)string1: “typedefstructArcBox” string2: “VertexTypedata” string3: “data”

(2)string1: “structArcBox” string2: “VertexType” string3: “Box”

2、字符串加密。

问题描述:一个文本串可用事先给定的字母映射表进行加密。例如,设字母映射表为: abcdefghi jklmnopqrstuvwxyz ngzqtcobmuhelkpdawxfyivrs j 则字符串“encrypt”被加密为”tkzwsdf”。 基本要求:

(1)编写一个算法将输入的文本串进行加密后输出。

(2)编写一个算法,将输入的已加密的文本串解密后输出。 (3)编写一个主函数进行测试。 测试数据

(1)需加密文本串为“encrypt”,加密后应为”tkzwsdf”。 (2)需解密文本串为”tkzwsdf”,解密后应为“encrypt”。


数据结构实验指导书1-10.doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:核磁测井在辽河油田火成岩储层解释评价中的应用

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: