
数据结构复习
魂小猫
这个作者很懒,什么都没留下…
展开
-
复习:串
串的定义 串是计算机信息处理中最常见的一种数据结构,是有限的字符序列,记作S=”a1a2……an”S=”a1a2……an”其中S是串名,用双引号括起来的字符序列是串值;双引号是定界符,不是串的成分;aiai(1小于等于i小于等于n)是程序设计语言的字符集中的字符,称为串元素;n是串的长度,且n大于等于0。当n=0时,称为空串,记作S=“ ”(一对双引号之间没有任何字符),而S=“ ”(一对双...原创 2018-06-30 13:52:40 · 280 阅读 · 0 评论 -
复习:栈
1.栈的定义栈(stack)是限定仅在标尾进行插入和删除操作的线性表。 我们把允许插入和删除的一端称为栈顶,另一端称为栈底,不含任何数据元素的栈称为空栈。栈又称为后进后出(Last In First Out)的线性表简称==LIFO==结构栈的顺序存储结构(1)数据元素:元素具有同一类型,最多Maxsize (2)当前栈顶:记录栈顶的下标(栈顶指针)typedef str...原创 2018-06-28 22:21:55 · 621 阅读 · 0 评论 -
复习:线性表——双链表、循环链表
双链表 在每个节点中除包含有数据域外,设置有两个指针域,分别指向前驱节点和后继节点。 typedef struct DNode { ElemType data; struct DNode *prior; struct DNode *next; }DlinkList;...原创 2018-06-28 20:54:28 · 212 阅读 · 0 评论 -
复习:顺序表——链表
链表概念链表:链式存储的线性表,简称链表。链表由多个链表元素组成,这些元素称为节点。结点之间通过逻辑连接,形成链式存储结构。存储结点的内存单元,可以是连续的也可以是不连续的。逻辑连接与物理存储次序没有关系。 链表分为两个域: 值域(数据域):用于存放结点的值 链域(指针域):用于存放下一个结点的地址或位置从内存角度出发: 链表可分为 静态链表、动态链表。 从链表存储方式的角度...原创 2018-06-28 19:39:10 · 453 阅读 · 0 评论 -
复习:图
图的定义图形结构属于复杂的非线性结构 图由顶点的集合和边的集合构成 图的形式化定义:G=(V,E) 集合V:顶点的有限集合,记为V(G) 对于有n个顶点的图,对于每个顶点编号(0~n-1),通过编号唯一确定一个顶点 集合E:连接V中两个不同的顶点(顶点对)的变的有限集合记为E(G) ...原创 2018-07-03 16:42:16 · 214 阅读 · 0 评论 -
线性表——顺序表的应用
一: 删除顺序表中所有值为x的数据元素 要求:时间复杂度为O(n)、空间复杂度为O(1)若用基本运算实现 void delnode1(Sqlist *&L,ElemType x) { int i; ElemType e; while((i=LocateElem(L,x))>0) { ListDele...原创 2018-06-28 10:00:00 · 587 阅读 · 0 评论 -
复习:哈夫曼树
带权路径长度 设二叉树有n个带权值的叶子节点,那么从根节点到各个叶子节点的路径长度与相应节点权值的乘积的和,叫做二叉树的带权路径长度(WPL) 哈夫曼树:具有最小带权路径长度的二叉树被称为哈夫曼树,或者最优二叉树构造哈夫曼树策略:要使WPL值最小,须使权值越大的叶子节点越靠近根节点,而权值越小的叶子节点越远离根节点(1)给定的n个权值{W1,W2,W3…Wn}构...原创 2018-07-02 22:13:48 · 456 阅读 · 0 评论 -
复习:二叉树的遍历
二叉树的遍历操作按照一定次序访问树中的所有节点,并且每个节点仅被访问一次的过程 二叉树的三种遍历 先序遍历:根节点–>左子树–>右子树 中序遍历:左子树–>根节点–>右子树 后序遍历:左子树–>右子树–>根节点先序:ABDGCEF 中序:DGBAECF 后序:GDBEFCA先序遍历的递归算法(1)访问根节点 (2)先序遍历左...原创 2018-07-02 15:01:54 · 242 阅读 · 0 评论 -
复习:二叉树
二叉树 二叉树是有限的节点集合——递归定义 这个集合或者是空或者由一个根节点和两棵互不相交的称为左子树和右子树的二叉树组成 二叉树的性质(1)非空二叉树上的叶节点树等于双分支节点加1 (2)非空二叉树上的第i层最多有2^(i-1)个节点 (3)高度为h的二叉树至多有2^h-1个节点 高度为h的m次树至多有m^h-1/m-1个节点满二叉树在一棵...原创 2018-07-02 11:14:54 · 304 阅读 · 0 评论 -
复习:树
树的形式化定义树:T={D,R} D={A,B,C,D,E,F,G,H,I,J,K,L,M} R={r} r={遍历树的遍历 (1)按照一定次序访问树中的所有节点,并且每个节点仅被访问一次的过程。 (2)遍历是最基本的运算,是树中所有其他运算的基础。树的三种遍历: (1)先根遍历:若树不空,则先访问根节点,然后依次先根遍历各棵子树。ABEFCGJDHIKLM...原创 2018-07-01 23:06:58 · 363 阅读 · 0 评论 -
复习:广义表
广义表广义表特性(1)广义表中的数据元素有相对次序 (2)广义表的长度定义为最外层包含元素的个数 (3)广义表的深度定义为所含括弧的重数,其中原子的深度为0,空表的深度为1 (4)广义表可以共享,一个广义表可以为其他广义表共享,这种广义表叫做再入表 (5)广义表可以是一个递归的表;一个广义表可以是自己的子表,这种广义表叫做递归表,递归表的深度是无穷的,长度是有限的 (6)任何...原创 2018-07-01 15:35:25 · 757 阅读 · 0 评论 -
复习:稀疏链表的十字链表
稀疏矩阵的十字链表表示(1)只保存非零值 (2)为每一行设置一个单独的链表,同时也为每一列设置一个单独的链表 includeincludeincludedefine Maxsize 10000typedef int ElemType; define M 3 //矩阵行define N 3 ...原创 2018-07-01 11:04:44 · 429 阅读 · 0 评论 -
复习:数组
数组的数据结构(1)数组是n个相同类型数据元素构成的有限序列 (2)数组的逻辑表示:A=(a1,a2,a3…,an) (3)其中ai表示数组中的第i个元素数组的存储结构数组的所有元素存储在一块地址连续的内存单元中数组数据类型的性质(1)数组的数据元素数目固定,一旦定义,其数据元素数目不再有增减变化 (2)数据中的数据元素都有相同的数据类型 (3)数组中的每个数据元素...原创 2018-07-01 11:03:46 · 261 阅读 · 0 评论 -
复习:线性表——顺序表
线性表:相同特性的数据元素的一个有限序列。 线性表的长度:n 序列中所含元素个数 空表:不包含任何元素 前驱:ai-1是ai的前驱 后继:ai+1是ai的后继 表头元素:a1 表尾元素:an线性表 元素之间一对一的线性结构 表内元素可以用二元组表示L=(D,R) D是元素的存储方式 R是元素之间前驱后继的关系ADT 数据对象 存储方式、格式 数据关系 元素之间的前驱后...原创 2018-06-25 21:56:20 · 244 阅读 · 0 评论 -
复习:队列
1.队列的定义队列是限制结点插入操作固定在一端进行,而结点的删除操作固定在另一端进行的线性表. 队列犹如一个两端开口的管道.允许插入的一端称为队头,允许删除的一端称为队尾.队头和队尾各用一个”指针”指示,称为队头指针和队尾指针.不含任何结点的队列称为”空队列”.队列的特点是结点在队列中的排队次序和出队次序按进队时间先后确定,即先进队者先出队.因此,队列又称先进先出表.简称FIFO(first...原创 2018-06-28 22:46:50 · 665 阅读 · 0 评论