《算法与数据结构》实验报告(2014) 内蒙古大学

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

《算法与数据结构》实验报告

班级____________ 姓名___________ 学号_____________

实验1:线性表的应用(6学时)

[问题描述]

一个线性表A中包含有三类字符:数字字符、字母字符、其他字符。试写一个函数实现对线性表A的拆分,使得线性表A、B、C分别各自指向同一类字符。

[实验目的]

(1)熟练掌握链表的基本操作;

(2)运用链表解决实际问题。

[实验内容及要求]

(1)首先通过输入字符建立线性表A;

(2)在拆分时,必须使用原表A的结点空间,不能额外创建新结点;

(3)拆分后,原表A指向数字字符,且其内容的前后次序与原表中的前后次序必须一致,新的表B指向字母字符,新的表C指向其他字符。其中要求删除B中

的重复结点(如“abbcdexec”,变为“abcdex”)。

(4)分别输出表A、B(删除重复结点后的内容)、C的内容;

(5)判断拆分后的表A是否是中心对称的(如123321或12321都是中心对称的),若是,则输出1,否则输出0。

[示例输入/输出]

示例输入:

1aabccd2e3f(!3c<2g1> (用于创建原表A的输入字符串)

示例输出:

123321 (拆分后表A的内容)

abcdef (拆分后表B的内容)

(!<> (拆分后表C的内容)

1 (拆分后表A是中心对称的)

《算法与数据结构》实验报告

班级____________ 姓名___________ 学号_____________

实验2:表达式求值(6学时)

[问题描述]

表达式求值是计算机实现程序设计语言中的基本问题之一,也是栈应用的一个典型例子,通过本实验,对输入的一个表达式进行求值。

[实验目的]

(1)掌握栈的应用;

(2)掌握算符优先表达式求值的算法;

(3)掌握字符串处理和数值的转换;

(4)练习上述知识的综合应用。

[实验内容及要求]

(1)表达式以字符串形式输入。如:12*(12.4+20.15)/25,结果以字符串形式输出(保留小数点后2位)。

(2)运算数是实数,运算符有+ - * / ,带括号,常用函数有:开方sqr()、正弦sin() 、余弦cos()、四舍五入取整rd()。函数的优先级高于+ - * /。

(3)能够有效判别表达式的输入格式是否有误(如缺失操作数、括号不匹配、函数名错误等),若输入错误,输出为“error!”。

[示例输入/输出]

示例输入:

12*(12.4+20.15)/25

15.4/(2-sin(5.12)*)+21

示例输出:

15.62

error!

《算法与数据结构》实验报告

班级____________ 姓名___________ 学号_____________

实验3:迷宫最短路径问题求解(9学时)

[问题描述]

以一个M×N的长方阵表示迷宫。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的最佳通路。

[实验目的]

(1)掌握栈的存储特点及其实现;

(2)掌握栈的出栈和入栈操作;

(3)灵活应用栈和队列。

[实验内容及要求]

(1)以一个M×N的长方阵表示迷宫,1和0分别表示迷宫中的通路和障碍。设计一个程序,对任意设定的迷宫,求出一条从入口到出口的最佳通路,或得出没

有通路的结论。(所谓最佳通路是指在所有的通路中输出步长最短的一条通

路。)

(2)首先创建一个迷宫,输入格式为:M N,指定迷宫的行数和列数,然后按行输入迷宫的每一行的布局信息(参见输入示例)。求得的通路以三元组(i, j, d)的形

式输出(每行输出5组),其中:(i, j)表示迷宫的坐标,d表示走到下一坐标的

方向(值为1、2、3、4,分别对应右、下、左、上方向)。迷宫入口坐标(左上

角)为(1,1),出口坐标为右下角。

(3)提示:用栈和队列都可实现。使用栈从所有可能的通路中寻找最短路径。使用队列可直接确定最短路径。

[示例输入/输出]

示例输入:

4 5

1 0 0 0 0

1 1 1 0 1

1 0 0 1 1

1 1 1 1 1

示例输出:

(1,1,2)(2,1,2)(3,1,2)(4,1,1)(4,2,1)(4,3,1)(4,4,1)(4,5,0)示例输入:4 4

1 0 0 1

1 0 1 1

1 0 0 1

1 0 1 1

示例输出:没有通路

《算法与数据结构》实验报告

班级____________ 姓名___________ 学号_____________

实验4:Huffman 编/译码器的设计与实现(9学时)

[问题描述]

设字符集为26个英文字母,其出现频度如下表所示。先建哈夫曼树,再利用此树对报文“This program is my favorite”进行编码和译码。

[实验目的]

(1) 掌握“Huffman-树”的构造过程;

(2) 对给定的原字符串进行编码。

(3) Decoding :对给定的编码串进行译码(或解码)。

[实验内容及要求]

(1) 构造“Huffman-树”; (2) 输出报文的编码;

(3) 输出报文编码的压缩比;

(4)

读入一串编码符号,输出解码结果。

[选作内容]

(1) 字符的出现频数能否从指定文件中统计而得? (2) 对指定的文件进行编码/解码。

[示例输入/输出]

输出数据为:

51 48 1 15 63 57 20 32 5 1 频度 z y x w v u t 字符 1

16

1

18

8

23

80

频度

p 21

f q 15

g r 47

h s o n m l k j 字符 57

103 32 22 13 64 186 频度 i e d c b a 空格

字符

相关文档
最新文档