1、链表
内容1:
问题描述:
实现顺序表和链表的建立、取元素、修改元素、插入、删除等顺序表的基本操作。
(1)依次从键盘读入数据,建立顺序表和链表;
(2)输出顺序表和链表中的数据元素
(3)求顺序表的长度;
(4)根据指定条件能够取元素;
(5)实现在指定位置插入和删除元素的功能。
线性表的顺序存储和线性表的链式存储
设计要求
首先设计一个含有多个菜单项的主菜单程序,然后再为这些菜单项配上相应的功能。
主菜单设计要求:程序运行后创建顺序表和链表,之后给出9个菜单项的内容和输入提示:
1.顺序表的插入
2.顺序表的删除
3.顺序表的长度
4.顺序表的显示输出
5.链表的插入
2、栈
内容1:数制转换
问题描述:从键盘输入一个十进制数n,并输入要转换的进制数m,利用栈将n转换成m进制,并输出转换后的结果。
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,显示一个标题“进制转换”,标题下方给出4个菜单项的内容和输入提示:
1.输入一个十进制数n
2.输入转换的进制m
3.进制转换
4.继续否?(y/n?)
请选择1—4:
功能要求
完成各菜单的功能,能正确转换数制
实现要求
1) 用VC++或c语言
2) 必须用栈实现转换
内容2:表达式求值
问题描述:从键盘输入一个表达式,将表达式用字符串保存后,输出表达式。利用栈判断表达式中的括号是否匹配,如匹配计算表达式的值,并输出匹配,否则,输出匹配失败。
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,显示一个标题“判断表达式括号匹配”,标题下方给出4个菜单项的内容和输入提示:
1.输入表达式
2.输出表达式
3.判断表达式的括号是否匹配并计算表达式的值
4.退出
请选择1—4:
功能要求
完成各菜单的功能,能正确判断表达式的括号匹配(括号限圆括弧和方括弧两种),
若匹配,利用算符优先法计算表达式的值。
计算表达式值的3个相关函数(后面已给出,可以直接粘贴到程序中使用):
In(c)---- //判断c是否为运算符
Precede(θ1, θ2) ----//判断两运算符θ1, θ2的优先关系
Operate(a, θ, b)---- //做四则运算a theta b,返回运算结果
实现要求
1) 可用VC++的引用或c语言用指针实现各功能的调用
2) 必须用栈实现括号匹配和表达式计算
3、串
内容:
问题描述:从键盘输入一个目标串S,并输入要匹配的模式串T,利用串的简单的模式匹配和KMP算法,定位模式串在主串中的位置。
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,显示一个标题“模式匹配算法”,标题下方给出6个菜单项的内容和输入提示:
1.输入一个主串S
2.输入一个模式串T
3. 计算模式串T的next函数值,并按格式显示出next函数值
4.实现简单模式匹配
5.实现KMP模式匹配
6. 继续/否?(y/n?)
请选择1—6:
功能要求
完成各菜单的功能,
菜单2,计算后要按格式显示出next函数值,
菜单3、4,要求实现在主串的第pos个位置开始,实现模式匹配。完成后要将主串、模式串及匹配的情况显示出来
实现要求
1) 用VC++或c语言
2) 用串的定长顺序存储
4、矩阵
内容:
问题描述:从键盘输入一个稀疏矩阵A,稀疏矩阵的输入形式采用三元组表示,然后进行快速转置成B,输出矩阵B。
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,显示一个标题“稀疏矩阵转置”,标题下方给出5个菜单项的内容和输入提示:
1.三元组形式输入稀疏矩阵A
2.输出矩阵A(三元组形式)
3.A转置为B
4. 输出B
5.退出
请选择1—5:
功能要求
完成各菜单的功能,能正确输入稀疏矩阵,并能正确转置。
实现要求
1) 必须用VC++的引用或c语言用指针实现各功能的调用
5、二叉树
问题描述:
建立一棵二叉树,试编程实现二叉树的如下基本操作:
1. 按先序序列构造一棵二叉链表表示的二叉树T;
2. 对这棵二叉树进行遍历:先序、中序、后序遍历,分别输出结点的遍历序列;
3. 求二叉树的叶结点数目;
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,给出6个菜单项的内容和输入提示:
1.创建二叉树(先序)
2.先序遍历并输出遍历序列
3.中序遍历并输出遍历序列
4.后序遍历并输出遍历序列
5. 统计二叉树的叶子结点数
6.退出
请选择菜单1—6:
功能要求
完成各菜单的功能,并能正确显示遍历结果和叶子数目
从键盘接受输入(先序),以二叉链表作为存储结构,建立二叉树(以先序来建立),
如输入:ABC∅∅DE∅G∅∅F∅∅∅(其中∅表示空格字符)
二叉链表结点定义:
typedef struct BiTNode{
TElemType data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
实现要求
1) 用VC++的引用实现各功能的调用
2) 测试数据:
AB∅∅CDF∅∅∅EG∅∅H∅∅(其中∅表示空格字符)
先序序列:ABCDFEGH
中序序列:BAFDCGEH
后序序列:BFDGHECA
3) 自己测试一个不少于12个结点的二叉树,并给出输入输出结果。
6、哈夫曼
实验内容与要求
问题描述:
用哈夫曼编码进行通信时,可以大大提高信道利用率,缩短信息传输时间,降低传输成本。但是,这要求在发送端通过一个编码系统对要传输的数据预先编码。试为这样的信息发送端写一个哈夫曼编码程序。
1.初始化。从终端输入字符集大小 n ,以及 n 个字符和 n 个权值,试构造一棵哈夫曼树,要求左子树的权值小于右子树的权值。
2.编码。若输入的权值分别是报文中不同字符出现的频率,利用已建好的哈夫曼树,对n个字符进行哈夫曼编码,每个编码的指针存放在一个一维数组中,并将编码输出。
要求:
设计要求
首先设计一个含有多个菜单项的主控菜单程序,然后再为这些菜单项配上相应的功能。
主控菜单设计要求:程序运行后,给出5个菜单项的内容和输入提示:
1.输入字符集大小
2.输入带编码字符及其权值
3.建立哈夫曼树HT
4.完成哈夫曼编码HC,并显示编码
5.退出
请选择菜单1—5:
功能要求
完成各菜单的功能,并能正确显示编码内容
1.初始化。从终端输入字符集大小 n ,以及 n 个字符和 n 个权值,试构造一棵哈夫曼树,要求左子树的权值小于右子树的权值。
2.编码。若输入的权值分别是报文中不同字符出现的频率,利用已建好的哈夫曼树,对n个字符进行哈夫曼编码,每个编码的指针存放在一个一维数组中,并将编码输出。
实现要求
1) 用VC++的引用实现各功能的调用
2) 哈夫曼树建立后,从叶子到根逆向求每一个字符的哈夫曼编码。
3) 测试数据:
设在通信中只可能出现的10种字符,其对应的概率如下表所示:试设计哈夫曼编码。
a b e f i k s t y z
0.12 0.05 0.07 0.08 0.14 0.23 0.03 0.15 0.02 0.11