leiyahui

纸上得来终觉浅,绝知此事要躬行

文章分类 -  数据结构

用类C语言实现的数据结构
图的存储结构
摘要:一 图的数组表示图的数组表示就是使用两个数组,一个一维数组一个二维数组,一维数组表示图中的节点,二维数组表示图中节点的关系解R二维数组中a[i][j]表示节点i和节点j之间的关系,1表示两个节点是连通的,0表示两个节点是不相连接的。对于无向图来说因为(vi,vj)belongs R则(vj,vi) ... 阅读全文

posted @ 2015-12-20 10:45 雷大叔 阅读(159) 评论(0) 推荐(0)

图的定义和基本操作
摘要:一 图的定义图是一种非线性的数据结构定义为:G=(V,R);V=(Vi|Vi belongs datatype ,i=0,1,2,..n-1,n>=0)R=(|(Vi,Vj) belongs V P(Vi,Vj),0属于R,图的基本定义有向图:如果存在两个节点,如果关系存在方向性,也就是!=,则对应... 阅读全文

posted @ 2015-12-16 19:39 雷大叔 阅读(332) 评论(0) 推荐(0)

二叉树的应用举例
摘要:一 Huffman树及其构造算法Huffman树又被称为H树一 路径及长度从树中的一个节点到另一个节点存在一条通路时,称这两节点之间存在一条路径。路径的分支树数(弧的数量)称为路径的长度。除根节点之外每个节点只有一个直接前驱,所以说根节点到每个节点有且只有一条路径。二树的路径长度树的路径长度为根节点... 阅读全文

posted @ 2015-11-28 12:30 雷大叔 阅读(1516) 评论(0) 推荐(0)

森林和二叉树的转换
摘要:1 树转化为二叉树这种转换方式是对于任意一个节点保留它对第一个子节点的指向,然后放弃对其他子节点的直接指向,通过第一个子节点指向第二个子节点,第二个指向第三个子节点,以此类推、 阅读全文

posted @ 2015-11-28 11:20 雷大叔 阅读(128) 评论(0) 推荐(0)

线索二叉树的一些基本操作
摘要:一 利用中序递归遍历发来建立线索二叉树算法描述:typedef struct Bnode{ short int Ltag,Rtag; datatype data; struct Bnode* LChild,*Child;}BTnode,*BTptrBTptr pre=NULLvoid Initthr... 阅读全文

posted @ 2015-11-22 20:41 雷大叔 阅读(173) 评论(0) 推荐(0)

线索二叉树
摘要:对于二叉树的遍历可以看做是对二叉树按照某种规则的线性化。即的到原结构的线性序列,使得出去两端节点,每个节点都有前驱和后缀寻找前驱和后缀的方式有两种一 如同前两节所讲的,按照某序对二叉树尽心遍历,但是这种方法比较浪费时间,寻找一个点的前驱和后缀可能要遍历整个树,所以说这种方法效率不高二 给每个节点增加... 阅读全文

posted @ 2015-11-22 20:30 雷大叔 阅读(142) 评论(0) 推荐(0)

二叉树遍历的应用
摘要:1 利用前序二叉树非递归遍历对二叉树中的各类节点进行统计 void PreOrderc(BTptr T,int* n0,int* n1,int* n2){ int n0; int n1; int n2; n0=n1=n2=0; BTptr p; ClearStack(s); push(s,p); ... 阅读全文

posted @ 2015-11-22 19:55 雷大叔 阅读(274) 评论(0) 推荐(0)

二叉树遍历的非递归形式
摘要:将递归转化为非递归无非是因为一下两个原因:一是因为有些语言没有递归语法二是因为递归会有大量的入栈和出栈,所以系统运行比较耗时。1 前序遍历二叉树的非递归实现void PreOrder(BTptr T){ BTptr p=T; ClearStack(s); Push(S,T); while(!Empt... 阅读全文

posted @ 2015-11-22 17:06 雷大叔 阅读(115) 评论(0) 推荐(0)

二叉树的遍历
摘要:对于一颗一般的二叉树来说一般由一下三部分组成 根左节点右节点显然它很符合递归的定义,即左右子树同样是二叉树设D 表示对根节点的访问,L表示对左子树的访问,R表示对右子树的访问一般有一下几种访问方式1前序遍历方式(1)先访问根节点 D(2)遍历左子树 L (3)遍历右子树 R2 中序遍历规则(1)先访... 阅读全文

posted @ 2015-11-22 14:48 雷大叔 阅读(210) 评论(0) 推荐(0)

二叉树的存储结构
摘要:一 二叉树的顺序存储结构将二叉树从跟节点开始依次存入连续的存储单元,如果一个节点为空则在数组中存入空值,以明确位置。(由节点的物理位置明确节点之间的关系)顺序存储结构优点是完全适合二叉树的存储,缺点是当遇到单斜树时就会浪费存储空间。#define maxszie 1000typedef dataty... 阅读全文

posted @ 2015-11-22 01:22 雷大叔 阅读(241) 评论(0) 推荐(0)

二叉树
摘要:二叉树,树的度=2(每个节点的OD<=2),切当节点的出度为1时,该节点的字数要么是它的左子树,要么是它的右子树。子树也是一颗二叉树。二叉树的基本定义和操作一 二叉树的定义二叉树是一颗有序树,它或者是一棵空树,或者是一个根节点和一个或两个子树组成,分别称为左子树或者右子树 阅读全文

posted @ 2015-11-22 00:58 雷大叔 阅读(128) 评论(0) 推荐(0)

树的基本概念
摘要:一 树的定义树是n个节点满足层次的有限集,当n=0时,称为空树,当n>0是称为非空树,非空树T满足一下两个条件(1)T有且只有一个根节点(2)T的其余节点可分为m个互不相交的有限集T1,T2,T3,T4,,,Tm.为根的子树。二 树的基本术语(1)节点:由数据元素及若干连接子树的分支(指针)组成一个... 阅读全文

posted @ 2015-11-22 00:44 雷大叔 阅读(247) 评论(0) 推荐(0)

广义表基本操作的递归算法
摘要:一 递归函数使用的是归纳的思想,再设计递归函数时应注意一下两点(1)首先应书写函数的首部和规格说明,严格定义函数的功能和接口(穿入值,返回值)对于子函数中的问题,只要接口一直就可以使用递归调用(2)对于函数中每一个递归调用都可以看做一个已实现的操作,只要接口正确就可以实现规格说明中的功能//心情不爽... 阅读全文

posted @ 2015-11-21 18:57 雷大叔 阅读(338) 评论(1) 推荐(0)

广义表的链式存储结构
摘要:对于广义表来说,它的元素可以是单原子或者说是子表,故用顺序存储结构来表示有一点困难一 单链表示法Atomdata/linknextatom=0 di为单元素 atom=1 di为子表data/link=data时atom=0,data/link=link时atom=1next表示下一个节点节点描述t... 阅读全文

posted @ 2015-11-21 13:29 雷大叔 阅读(1907) 评论(0) 推荐(0)

广义表
摘要:一 广义表的定义广义表又被称为列表(Lists),是线性表的推广,在线性表L(a0,a1,a2,a3,...an-1)中,ai是单个元素或者与原子,即ai本身不再是一个数据结构。而广义表记为Ls(d0,d1,d2,...dn-1),式中di可以是一个原子也可以是另一张表。若di为单原子则层di为LS... 阅读全文

posted @ 2015-11-21 12:07 雷大叔 阅读(373) 评论(0) 推荐(0)

数组的动态存储方式
摘要:签名讲的数组都是在运行前就确定了数组大小,分配内存的。属于静态分配,这种存储方式对于在运行前不能确定长度的数组必须定义足够大的数组,以防止内存溢出。这样对于资源紧张的系统来说是非常不切实际的,所以就有了动态数组的概念。下面生成一A[3][4][5][6]维的数组为例进行介绍(1)目标是生成一个以ba... 阅读全文

posted @ 2015-11-20 10:38 雷大叔 阅读(660) 评论(0) 推荐(0)

数组的静态存储方式
摘要:1 数组元素的静态存储映像依照数组的定义,数组的存储方式只能是顺序的。由于计算机的存储空间是一维的,所以所以要将数组中的源于按照某种次序映射到一维存储空间,也就是降维问题。C语言中是按照低维下标优先的原则进行存储的2 静态数组元素地址计算为了实现数组的随机存储,也就是能够通过下标直接找到相应的地址,... 阅读全文

posted @ 2015-11-20 09:41 雷大叔 阅读(571) 评论(0) 推荐(0)

数组的定义及其操作
摘要:一 数组得定义数组是n维数据类型相同的元素构成的有限序列,而且是储存在一块地址连续的存储空间中。在大多数语言中都有数组类型。下面以C语言为例一维数组大家已经很熟悉了,下面来看二维数组。对于任意一个二维数组 A=A[d1][d2],d1为数组的行数,d2为数组的列数,aij为数组中第i行第j列的元素。... 阅读全文

posted @ 2015-11-20 09:21 雷大叔 阅读(405) 评论(0) 推荐(0)

串的应用举例
摘要:文本编辑程序#include#include#include#define MAX 100typedef struct node //存放一行数据{ char data[80]; struct node* next;}nodetype, *link;typedef struct //每一行的信息{ ... 阅读全文

posted @ 2015-11-19 19:19 雷大叔 阅读(330) 评论(0) 推荐(0)

串的堆存储结构
摘要:一 串的堆存储结构是指系统分配一个足够大可被串值利用的存储空间,每当建立一个新串的时候,系统可以从这个空间中划出一个大小和串长度相等的空间来储存新的串值。每个串自动存储在一个组连续的单元中。由于每个串的存储空间是运行时生成的,所以这也是一种动态存储方式。二 串的堆存储结构描述。可以存放若干个字符的存... 阅读全文

posted @ 2015-11-19 15:58 雷大叔 阅读(1398) 评论(0) 推荐(0)