数据结构
文章平均质量分 60
Bee_Darker
不积跬步,无以至千里;
不积小流,无以成大海
展开
-
数据结构思维导图——线性表
原创 2019-11-04 22:39:33 · 525 阅读 · 0 评论 -
数据结构思维导图——绪论
原创 2019-11-03 21:47:11 · 401 阅读 · 0 评论 -
B树、B-树、B+树、B*树
B树 即二叉搜索树: 1.所有非叶子结点至多拥有两个儿子(Left和Right); 2.所有结点存储一个关键字; 3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树; 如: B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,...转载 2018-12-26 23:11:30 · 161 阅读 · 0 评论 -
说说数据结构中的几种树
1. 满二叉树(又称完美二叉树)除最后一层无任何子结点外,每一层上的所有结点都有两个子结点的二叉树。或如果一个二叉树的层数为K,且结点总数是(2^k) -1 ,则它就是满二叉树。2.完全二叉树对于深度为K的,有n个结点的二叉树,当且仅当其每一个结点都与深度为K的满二叉树中编号从1至n的结点一一对应时称之为完全二叉树。注意:满二叉树一定是完全二叉树,完全二叉树不一定是满二叉树...原创 2018-12-06 23:58:53 · 1674 阅读 · 0 评论 -
哈夫曼树及其应用
1. 基本概念① 结点路径:从树中一个结点到另一个结点的之间 的分支构成这两个结点之间的路径。② 路径长度:结点路径上的分支数目称为路径长度。③ 树的路径长度:从树根到每一个结点的路径长度之和。④ 结点的带权路径长度:从该结点的到树的根结点 之间的路径长度与结点的权(值)的乘积。⑤ 树的带权路径长度:树中所有叶子结点的带权路径长度之和,记做: WPL=w1 × l1+w2 × ...原创 2018-11-27 23:15:06 · 934 阅读 · 0 评论 -
二叉树的表示和实现
1. 二叉树的概念1.1 二叉树的定义(递归定义)二叉树是有限的节点集合。这个集合或者是空。 或者由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成。二叉树的5种基本形态:二叉树的4种表示方法:树型表示法 文氏图表示法 凹入表示法 括号表示法两种特殊的二叉树:①满二叉树在一棵二叉树中:如果所有分支节点都有双分节点; 并且叶节点都集中在二叉...原创 2018-11-26 14:07:32 · 5417 阅读 · 4 评论 -
树
1. 树的概念1.1 树的定义① 树形式化定义T={D,R}。D是包含n个节点的有限集合 (n≥0)。当n=0时为空树,否则关系R满足以下条件:有且仅有一个节点d∈D,它对于关系R来说没有前趋节点,节点d称作树的根节点。 除根节点外,每个节点有且仅有一个前趋节点。 D中每个节点可以有零个或多个后继节点。②树的递归定义树是由n(n≥0)个节点组成的有限集合(记为 T)。其中...原创 2018-11-25 22:01:11 · 402 阅读 · 0 评论 -
链队列的应用之判断回文数
1.问题描述给定一个数N,如果这个数顺读和逆读都是一样的,则称之为回文数。例如:123321是回文数,123421不是回文数。2.解决思路将数N的各位数字分别存放在链队列和字符数组中,依次比较队列和数组中的字符,如果完全相等,则是回文数,否则不是回文数。3.代码实现//----*---*---*---*---*---*---*---//程序名称:链队列的应用:判断回文//...原创 2018-11-05 14:09:23 · 1403 阅读 · 1 评论 -
串的定长顺序存储表示
1.串的定长顺序存储表示#define MAXSTRLEN 255 //用户可在255以内定义最大串长typedef unsigned char SString[MAXSTRLEN +1]; //0号单元存放串的长度2.基本操作的函数原型1)初始化Status InitStr(SString &S);...原创 2018-10-28 00:04:52 · 4820 阅读 · 1 评论 -
栈的应用(二)行编辑器程序
1.问题描述2.解决方案(1)每行输入输出数组前推入栈中暂存。(2)检查输入的字符,如果是“#”,则从栈顶删去一个字符;如果是“@”,则清空栈。(3)发现用户键入回车就将当前栈中的字符从栈尾到栈顶推到输出数组。(4)重复上述操作直到用户输入 EOF(即 Ctrl + Z)。3.程序代码//----*---*---*---*----//程序名称:行编辑程序//编...原创 2018-10-27 15:02:49 · 587 阅读 · 0 评论 -
链栈的表示与实现
1.链栈的定义typedef struct SNode{ SElemType data; struct SNode *next; }SNode,*LinkStack; 2.基本操作的函数原型1)创建Status CreatStack(LinkStack &S,int n);操作结果:创建一个栈长为n的链栈2)销...原创 2018-10-25 00:11:09 · 917 阅读 · 0 评论 -
顺序栈的表示和实现
顺序栈的定义typedef struct{SElemType *base; //存储空间基址SElemType *top; //栈指针int stacksize; //分配容量)SqStack;2.基本操作的函数原型1)创建Status InitStack(SqStack &S);操作...原创 2018-10-24 15:42:46 · 1016 阅读 · 0 评论 -
单链表的实现
1.单链表的存储表示typedef struct LNode{ElemType data;struct LNode *next; }LNode,*LinkList; 2.基本操作的函数原型1)创建CreatList( L,n)操作结果:构造一个表长为n的链表2)销毁DeatroyList(L)初始条件:单链表L已存在操作结果:销毁单链...原创 2018-10-24 14:16:25 · 394 阅读 · 0 评论 -
循环队列----队列的顺序表示和实现
1.队列的顺序表示1)C语言的描述初始化建空对列时,令front=rear=0,每当插入新的队尾元素时,“尾指针增1”;每当删除队列头元素时,“头指针增1”。因此,在非空队列中,头指针始终指向队列头元素,而尾指针始终指向队列尾元素的下一位置,如图所示。2)存在问题假设当前为队列分配的最大空间为6,则当队列处于图3.12(d)的状态时不可再继续插入新的队尾元素,否则会因数组越界而...原创 2018-10-26 13:27:17 · 2862 阅读 · 0 评论 -
串的堆分配存储表示
1.串的堆分配存储表示typedef struct{ char *ch; //若是非空串,则按串长分配存储区,否则ch为NULL int length; //串长}2.基本操作的函数原型1)生成串Status StrAssign(HString &...原创 2018-10-28 22:14:50 · 2771 阅读 · 0 评论 -
链队列的表示和实现
1.链队列的表示typedef struct QNode{ QElemType data; struct QNode *next;}QNode, *QueuePtr;typedef struct{ QueuePtr *front; //队头指针 QueuePtr *rear; ...原创 2018-10-25 17:53:55 · 1134 阅读 · 0 评论 -
栈的应用(一)数制转换
1.问题描述将十进制数N转换成其他d进制数2.原理N=(N div d) * d+N mod d (其中:div为整除运算,mod为求余运算)3.例如(1348)10=(2504)8,其运算过程如下:4.程序代码//----*-----*------//程序名称:数制转换//编译环境:VC++ 6.0//作者:Bee_darker//修改日期:2018-10-25...原创 2018-10-25 10:54:54 · 1021 阅读 · 0 评论 -
线性表的顺序存储表示
//////////////////////////程序名称:顺序表的实现//编译环境:Visual C++ 6.0//作者:Bee_Darker//最后修改日期:2018-10-21#include<stdio.h>#include<stdlib.h>#define LIST_INIT_SIZE 100#define LISTINCREMENT 1...原创 2018-10-22 12:05:49 · 448 阅读 · 0 评论