摘要: 赫夫曼树在基础数据结构里也是一个难点,所以趁在家我把我课下和张同学写的报告提一些出来,稍微详细的写一下。 基本概念: 赫夫曼树又称为最优树,是一类带权路径长度最短的树。它具有n个叶子结点(每个结点的权值为wi) 的二叉树不止一棵,但在所有的这些二叉树中,必定存在一棵WPL值最小的树,称这棵树为Huf 阅读全文
posted @ 2017-03-02 19:26 Nathaneko 阅读(1020) 评论(0) 推荐(0) 编辑
摘要: 层次遍历二叉树,是从根结点开始遍历,按层次次序“自上而下,从左至右”访问树中的各结点。 建树方法采用“先序遍历+空树用0表示”的方法 要求:采用队列对象实现,函数框架如下:输入 第一行输入一个整数t,表示有t个测试数据 第二行起输入二叉树先序遍历的结果,空树用字符‘0’表示,输入t行 输出 逐行输出 阅读全文
posted @ 2017-03-02 18:20 Nathaneko 阅读(5308) 评论(0) 推荐(0) 编辑
摘要: 用数组存储与前文是类似的,只是换了一个储存方式,有兴趣可以看一下下面的代码,具体就不解释了。 阅读全文
posted @ 2017-03-02 18:16 Nathaneko 阅读(583) 评论(0) 推荐(0) 编辑
摘要: 计算一颗二叉树包含的叶子结点数量。左叶子是指它的左右孩子为空,而且它是父亲的左孩子 提示:可以用三叉链表法,也可以用现有算法对两层结点进行判断 建树方法采用“先序遍历+空树用0表示”的方法 输入 第一行输入一个整数t,表示有t个测试数据 第二行起输入二叉树先序遍历的结果,空树用字符‘0’表示,输入t 阅读全文
posted @ 2017-03-02 18:06 Nathaneko 阅读(814) 评论(0) 推荐(0) 编辑
摘要: 计算一颗二叉树包含的叶子结点数量。提示:叶子是指它的左右孩子为空。 建树方法采用“先序遍历+空树用0表示”的方法,即给定一颗二叉树的先序遍历的结果为AB0C00D00,其中空节点用字符‘0’表示。则该树的逻辑结构如下图。输入 第一行输入一个整数t,表示有t个测试数据 第二行起输入二叉树先序遍历的结果 阅读全文
posted @ 2017-03-02 18:05 Nathaneko 阅读(6759) 评论(0) 推荐(0) 编辑
摘要: 给定一颗二叉树的逻辑结构,(先序遍历的结果,空树用字符‘0’表示,例如AB0C00D00),建立该二叉树的二叉链式存储结构,并输出该二叉树的先序遍历、中序遍历和后序遍历结果输入 第一行输入一个整数t,表示有t个二叉树 第二行起输入每个二叉树的先序遍历结果,空树用字符‘0’表示,连续输入t行 输出 输 阅读全文
posted @ 2017-03-02 17:50 Nathaneko 阅读(419) 评论(0) 推荐(0) 编辑
摘要: KMP算法用于模式串字符匹配,因为没有提前预习,上课时听得云里雾里,后来回去看了一晚上,翻了一些网上的讲解才理解了。我简单讲一下,我们在一串字符串A里搜索匹配另一段字符串B时,思路最简单方法的就是从第一位开始一个个对照匹配,出现错误就移动到第二个字符继续匹配,不匹配再第三个。但这样毕竟性能比较低,K 阅读全文
posted @ 2017-03-02 17:19 Nathaneko 阅读(394) 评论(0) 推荐(0) 编辑
摘要: 这是一个考察对堆栈概念理解的应用,输入一串带括号的式子,检查其中的括号是否前后对应。思路是当遇到括号是入栈,并在下次遇到括号时检测是否与上一个入栈的括号匹配为一对,不是则继续入栈。因为正确的式子最终总能遇到一个匹配的括号。例如:{3+a+[1+b+c*(1+2)]+3},可以最先检测出()这一对小括 阅读全文
posted @ 2017-03-02 16:54 Nathaneko 阅读(342) 评论(0) 推荐(0) 编辑
摘要: 使用C++的STL堆栈对象,编写程序实现行编辑功能。行编辑功能是:当输入#字符,则执行退格操作;如果无字符可退就不操作,不会报错本程序默认不会显示#字符,所以连续输入多个#表示连续执行多次退格操作每输入一行字符打回车则表示字符串结束注意:必须使用堆栈实现,而且结果必须是正序输出 输入第一行输入一个整 阅读全文
posted @ 2017-03-02 16:46 Nathaneko 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 栈可以想象成一个放套圈的柱子,柱子连着地面,所以先放进去的套圈想取出来就得把后放进的都拿出来才行,也就是先进后出原则。 C++中已经自带堆栈对象stack,无需编写堆栈操作的具体实现代码。本题目主要帮助大家熟悉stack对象的使用,然后实现字符串的逆序输出输入一个字符串,按字符按输入顺序压入堆栈,然 阅读全文
posted @ 2017-03-02 16:39 Nathaneko 阅读(3016) 评论(0) 推荐(0) 编辑
摘要: 实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据输入n第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除 阅读全文
posted @ 2017-03-02 16:28 Nathaneko 阅读(734) 评论(0) 推荐(0) 编辑
摘要: 本篇与顺序表的合并题目相同,只不过用了链表的方式实现 因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。 阅读全文
posted @ 2017-03-02 16:24 Nathaneko 阅读(471) 评论(0) 推荐(0) 编辑
摘要: 实现单链表,含头结点属性包括:data数据域、next指针域操作包括:插入、删除、查找注意:单链表不是数组,所以位置从1开始对应首结点,头结点不放数据 输入第1行先输入n表示有n个数据,接着输入n个数据第2行输入要插入的位置和新数据第3行输入要插入的位置和新数据第4行输入要删除的位置第5行输入要删除 阅读全文
posted @ 2017-03-02 16:16 Nathaneko 阅读(354) 评论(0) 推荐(0) 编辑
摘要: 建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000) 该类具有以下成员函数: 构造函数:实现顺序表的初始化。 插入多个数据的multiinsert(int i, int n, int item[])函数,实现在第i个位置,连续插入来自数组item的n个数据,即从位置i开始插入多个数据 阅读全文
posted @ 2017-03-02 16:10 Nathaneko 阅读(408) 评论(0) 推荐(0) 编辑
摘要: 因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。 顺序表的合并操作 题目描述建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000) 已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序输入第1 阅读全文
posted @ 2017-03-02 16:04 Nathaneko 阅读(850) 评论(0) 推荐(0) 编辑