随笔分类 -  数据结构

摘要:一、哈夫曼树,最优二叉树,WPL最小的二叉树 带权路径长度(WPL): 设二叉树有n个叶子结点,每个叶子结点带 有权值 wk,从根结点到每个叶子结点的长度为 lk,则每个叶子结点的带权路径长度之和WPL 哈夫曼树的特点: 1、没有度为1的结点; 2、哈夫曼树的任意非叶节点的左右子树交换后仍是哈夫曼树 阅读全文

posted @ 2019-08-18 15:16 金色的省略号 阅读(573) 评论(0) 推荐(1)

摘要:二叉树T:一个有穷的结点集合,这个集合可以为空,若不为空,则它是由根结点和称为其左子树TL和右子树TR的 两个不相交的二叉树组成。 二叉树五种基本形态:空树,只有根结点,右子树为空,左子树为空,左右子树均不为空树。 一、二叉树的几个重要性质 1、设二叉树的根结点为第一层,二叉树第i层的最大结点数是2 阅读全文

posted @ 2019-08-07 15:58 金色的省略号 阅读(1573) 评论(0) 推荐(0)

摘要:树(Tree): n(n≥0)个结点构成的有限集合。对于任一棵非空树(n> 0),它具备以下性质:1、树中有一个称为"根(Root)"的特殊结点;2、其余结点可分为m(m>0)个互不相交的有限集,其 中每个集合本身又是一棵树,称为原来树的" 子树(SubTree)" 子树是不相交的;除了根结点外,每 阅读全文

posted @ 2019-08-06 09:27 金色的省略号 阅读(2314) 评论(0) 推荐(0)

摘要:数据结构List,叫列表,也叫线性表。栅栏fence的概念,也就是操作定位。 List的抽象模板类代码: 1 /* class List */ 2 template <class Elem> 3 class List 4 { 5 public: 6 //set the position of the 阅读全文

posted @ 2019-07-28 14:04 金色的省略号 阅读(415) 评论(0) 推荐(0)

摘要:一、朴素模式匹配 #include <stdio.h> #include <stdlib.h> /* 在源串S中查找目标串T,如没有找到则打印出错信息; 否则,在第一次匹配后请将源串S的匹配部分就地逆置 */ typedef char elementype; typedef struct node 阅读全文

posted @ 2019-07-17 10:19 金色的省略号 阅读(360) 评论(0) 推荐(0)

摘要:01-复杂度1 最大子列和问题 给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 1 阅读全文

posted @ 2019-06-14 16:16 金色的省略号 阅读(1331) 评论(0) 推荐(0)

摘要:一、中缀表达式转后缀表达式并计算,后缀表达式字符串形式,数字限定小于10,利用数字栈操作符栈 1 /* c语言的中缀表达式转后缀表达式并计算结果 2 中缀表达式含双目运算符和小括号,数字操作数小于10, 3 演示转变及计算过程 4 */ 5 #include <stdio.h> 6 #include 阅读全文

posted @ 2019-04-18 16:11 金色的省略号 阅读(2602) 评论(0) 推荐(0)

摘要:队列(queue )是一种先进先出(first in first out,简称 FIFO表)的线性表。 它只允许在表的一端进行插入,而在另一端删 除元素。 在队列中,允许插入的一端叫做队尾(rear),允许删除的一端 称为队头(front)。 一、队列的顺序表示和实现,循环队列(数组) 1 #inc 阅读全文

posted @ 2019-03-25 11:54 金色的省略号 阅读(372) 评论(0) 推荐(0)

摘要:栈(Stack)是限定仅在表尾进行插入或删除操作的线性表。通常称其表尾为栈顶(top),表头端称为栈底( bottom)。按栈的存储方式可以分为顺序栈、链式栈。 一、顺序表栈 1 #include <stdio.h> 2 #include <malloc.h> 3 4 #define OVERFLO 阅读全文

posted @ 2019-03-23 22:43 金色的省略号 阅读(550) 评论(0) 推荐(0)

摘要:一、数据是数据对象的集合,数据对象是数据元素(相同性质的)的集合,数据元素是数据项的集合。 数据结构是带结构的数据元素的集合,DS = (D,R),D是数据元素的集合,R是D上关系的集合。 数据元素及其相互关系称为数据结构。 二、数据结构总览: 数据的逻辑结构与存储结构密切相关,算法设计取决于选定的 阅读全文

posted @ 2019-03-20 16:43 金色的省略号 阅读(372) 评论(0) 推荐(0)

摘要:一、SLINKLIST(单链表)类,模板类 /* 该文件按习惯可以分成.h文件和实现的.cpp文件 1、插入元素,从第0位开始 2、类内定义的类型作为函数返回值,前面要加typename及类作用域 */ template <class elemType> class sLinkList { priv 阅读全文

posted @ 2019-01-20 21:14 金色的省略号 阅读(634) 评论(0) 推荐(0)

摘要:一、C++模板 1、seqList模板类,顺序表代码 1 # include "list.h" 2 3 //代码清单2-2 顺序表类的定义和实现 4 // The Definition of seqList 5 template <class elemType> 6 class seqList:pu 阅读全文

posted @ 2019-01-20 21:01 金色的省略号 阅读(843) 评论(0) 推荐(0)

摘要:7-1 数组循环左移 本题要求实现一个对数组进行循环左移的简单函数:一个数组a中存有n(>)个整数,在不允许使用另外数组的前提下,将每个整数循环向左移m(≥)个位置,即将a中的数据由(a​0​​a​1​​⋯a​n−1​​)变换为(a​m​​⋯a​n−1​​a​0​​a​1​​⋯a​m−1​​)(最前 阅读全文

posted @ 2019-01-20 20:12 金色的省略号 阅读(2628) 评论(0) 推荐(0)

摘要:冒泡排序法(bubble sort)的基本思想是,通过相邻两个记录 之间的比较和交换,使关键码较小的记录逐渐从底部移向顶 部(上升),关键码较大的记录逐渐从顶部移向底部(沉 底),冒泡由此得名;冒泡排序属于交换类排序 排序算法是稳定的,数组存储或链表存储都可以冒泡排序,冒泡排序最好情况的时间复杂度O 阅读全文

posted @ 2018-12-28 17:01 金色的省略号 阅读(208) 评论(0) 推荐(0)

摘要:一、选择排序法(selection sort)的基本思想是,第i趟选择排序通过n-i次关键码的比较,从n-i+1个记录中选出关键码最小的记录,并和第i个记录进行交换。选择排序是不稳定的,优于冒泡排序 1 #include <stdio.h> 2 #include <string.h> 3 /* 4 阅读全文

posted @ 2018-12-28 16:34 金色的省略号 阅读(171) 评论(0) 推荐(0)

摘要:一、冒泡排序法(bubble sort)的基本思想是,通过相邻两个记录 之间的比较和交换,使关键码较小的记录逐渐从底部移向顶 部(上升),关键码较大的记录逐渐从顶部移向底部(沉 底),冒泡由此得名;冒泡排序属于交换类排序 排序算法是稳定的,数组存储或链表存储都可以冒泡排序,冒泡排序最好情况的时间复杂 阅读全文

posted @ 2018-12-25 17:39 金色的省略号 阅读(418) 评论(0) 推荐(0)

摘要:插入排序 一、定义:将数组分成左右2个部分,左边的是有序的,右边的是无序的,按正序或反序,逐个把右边无序的插入到左边有序的,最终完成排序。 实现: 1.移动法 先把数组第0个元素看作是有序的,第1个元素之后是无序的,把第1个元素取出来保存,并与第0个元素进行比较,如果第0个元素大(或小),移动第0个 阅读全文

posted @ 2018-12-24 11:00 金色的省略号 阅读(230) 评论(0) 推荐(0)