排序:
默认
按更新时间
按访问量
RSS订阅

数据结构概述

数据结构概述 一、定义 我们如何把现实中大量而复杂的问题以特定的数据类型和特定的存储结构保存到主存储器(内存)中,以及在此基础上为实现某个功能(比如查找某个元素,删除某个元素,对所有元素进行排序)而执行的相应的操作,这个相应的操作也叫算法 数据结构=个体+个体的关系 算法=对存储数据的...

2018-06-25 15:32:43

阅读数 130

评论数 0

图 在线性表中,每个元素之间只有一个直接前驱和一个直接后继, 在树形结构中,数据元素之间是层次关系,并且每一层上的数据元素可能和下一层中多个元素相关,但只能和上一层中一个元素相关。 但这仅仅都只是一对一,一对多的简单模型,如果要研究如人与人之间关系就非常复杂了。 一、图的定义 图(G...

2018-04-05 11:51:29

阅读数 88

评论数 0

赫夫曼树与赫夫曼编码

赫夫曼树与赫夫曼编码 一、赫夫曼树 在数据膨胀、信息爆炸的今天,数据压缩的意义不言而喻。谈到数据压缩,就不能不提赫夫曼(Huffman)编码,赫夫曼编码是首个实用的压缩编码方案,即使在今天的许多知名压缩算法里,依然可以见到赫夫曼编码的影子。 另外,在数据通信中,用二进制给每个字符进行编码...

2018-04-04 15:50:52

阅读数 177

评论数 0

树、森林及二叉树的相互转换

树、森林及二叉树的相互转换 一、普通树转换为二叉树 步骤如下: 加线,在所有兄弟结点之间加一条连线。 去线,对树中每个结点,只保留它与第一孩子结点的连线,删除它与其他孩子结点之间的连线。 层次调整,以树的根结点为轴心,将整棵树顺时针旋转一定的角度,使之结构层次分明。 二、森...

2018-04-04 13:15:41

阅读数 214

评论数 0

线索二叉树

线索二叉树 一、线索二叉树由来 由于普通的二叉树的缺陷导致了空间的巨大浪费,如: 数序题:请问以下有多少个“^”?总共浪费了多少字节的空间?(32bit的机器) 我们知道通过对二叉树的约定遍历方式,可以得到一个固定的遍历顺序,那么请问哪种遍历方式可以节省“^”所浪费的空间?(利用“...

2018-04-04 11:00:22

阅读数 87

评论数 0

二叉树的遍历

二叉树的遍历 一、二叉树的遍历 二叉树的遍历(traversing binary tree)是指从根结点出发,按照某种次序依次访问二叉树中所有结点,使得每个结点被访问一次且仅被访问一次。 二叉树的遍历次序不同于线性结构,线性结构最多也就是分为顺序、循环、双向等简单的遍历方式。 二叉树的遍历...

2018-04-04 09:12:40

阅读数 131

评论数 1

二叉树

二叉树 一、定义 二叉树(Binary Tree)是n(n>=0)个结点的有限集合,该集合或者为空集(空二叉树),或者由一个根结点和两棵互不相交的、分别称为根结点的左子树和右子树的二叉树组成。(这个定义显然是递归形式的) 二、二叉树的特点 1.每个结点最多...

2018-04-03 18:36:33

阅读数 97

评论数 0

树 无论是线性表也好,栈和队列也罢,都是一对一的线性结构,都是2P模式。 而树是一种一对多的数据结构。 一、定义 树(Tree)是n(n>=0)个结点的有限集。当n=0时成为空树,在任意一棵非空树中: 有且仅有一个特定的称为根(Root)的结点; 当n&...

2018-04-03 14:24:34

阅读数 61

评论数 0

递归与分治

递归与分治 一、斐波那契(Fibonacci)数列的递归实现 他讲的一个故事: 如果说兔子在出生两个月后,就有繁殖能力,一对兔子每个月能生出一对小兔子来。假设所有兔子都不会死去,能够一直干下去,那么一年以后可以繁殖多少对兔子呢? 用数学函数来定义: 1.使用迭代来实现打印...

2018-04-03 10:15:01

阅读数 795

评论数 0

循环队列

循环队列 队列的实现上我们更愿意用链式存储结构来存储。 一、队列的顺序存储结构 先按照应有的思路来考虑下如何构造队列的顺序存储结构。 假设一个队列有n个元素,则顺序存储的队列需建立一个大于n的存储单元,并把队列的所有元素存储在数组的前n个单元,数组下标为0的一端则是队头。 1.入...

2018-04-02 16:23:22

阅读数 194

评论数 1

队列

队列 一、定义 队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。 与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表。 与栈相同,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。 队列在现...

2018-04-02 11:01:41

阅读数 89

评论数 0

栈--利用栈实现进制转换

利用栈实现进制转换 一、二进制转十进制 利用栈的数据结构特点,将二进制转换为十进制数。 二进制数是计算机数据的存储形式,它是由一串0和1组成的,每个二进制数转换成相应的十进制数方法如下: (XnXn-1……X3X2X1)2 = X1*2^0+X2*2^1+…+Xn*2^(n-1) 一...

2018-03-30 15:32:58

阅读数 6499

评论数 0

栈的顺序存储结构

栈的顺序存储结构 栈是一种重要的线性结构,可以这样讲,栈是线性表的一种具体形式。 栈这种后进先出的数据结构应用是非常广泛的。 在生活中,例如我们的浏览器,每点击一次“后退”都是退回到最近的一次浏览网页。 例如我们Word,Photoshop等的“撤销”功能也是如此。再例如我们C语言的函数,...

2018-03-30 14:45:18

阅读数 752

评论数 1

线性表--链式存储结构--双向链表

双向链表 一、双向链表结构 双向链表结点结构 typedef struct DualNode { ElemType data; struct DualNode *prior; //前驱结点 struct DualNode *next; //后继结点 } ...

2018-03-29 19:25:36

阅读数 195

评论数 0

线性表--链式存储结构--循环链表

循环链表 对于单链表,由于每个结点只存储了向后的指针,到了尾部标识就停止了向后链的操作。也就是说,按照这样的方式,只能索引后继结点不能索引前驱结点。 这会带来什么问题呢? 例如不从头结点出发,就无法访问到全部结点。 事实上要解决这个问题也并不麻烦,只需要将单链表中终端结点的指针端由空指针改...

2018-03-28 19:27:56

阅读数 98

评论数 0

线性表--链式存储结构--静态链表

静态链表 一、存储结构 #define MAXSIZE 1000 typedef struct { ElemType data; // 数据 int cur; // 游标(Cursor) } Component, StaticLinkList[MAXSIZE...

2018-03-27 10:52:51

阅读数 96

评论数 0

线性表--链式存储结构--单链表

线性表–链式存储结构–单链表 一、定义 1.特点: 用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置。 比起顺序存储结构每个数据元素只需要存储一个位置就可以了。现在链式存储结构中,除了要存储数据元素信息外,还要存储它的后继元素的存储地址(指针)。 ...

2018-03-23 14:56:04

阅读数 83

评论数 0

线性表--顺序存储结构

一、线性表的顺序存储结构 线性表有两种物理存储结构:顺序存储结构和链式存储结构。 顺序存储结构 ①定义: 用一段地址连续的存储单元依次存储线性表的数据元素。 ②线性表(a1,a2,…,an)的顺序存储如下: 物理上的存储方式事实上就是在内存中找个初始地址,然后通过占位的形...

2018-03-08 14:05:00

阅读数 1622

评论数 0

线性表--基本概念

线性表–基本概念 一、定义 线性表(List):由零个或多个数据元素组成的有限序列。 注意: - 首先它是一个序列,也就是说元素之间是有个先来后到的,即元素之间是有顺序的。 - 若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继。 - 另外,...

2018-03-08 13:57:25

阅读数 135

评论数 0

算法的时间复杂度和空间复杂度

算法的时间复杂度和空间复杂度 一、算法效率的度量方法 1.事后统计方法 这种方法主要是通过设计好的测试程序和数据,利用计算机计时器对不同算法编制的程序的运行时间进行比较,从而确定算法效率的高低。 2.事前分析估算方法 在计算机程序编写前,依据统计方法对算法进行估算。 经过总结,我们...

2018-02-27 21:07:14

阅读数 537

评论数 0

提示
确定要删除当前文章?
取消 删除
关闭
关闭