首页 > 其他分享 >数据结构

数据结构

时间:2024-08-24 11:04:22浏览次数:7  
标签:结点 队列 链表 二叉树 顶点 数据结构 指针

数据的逻辑结构

线性结构

image

非线性结构

image

数据的存储结构

顺序存储
链式存储
索引存储
散列存储

线性表

顺序存储:用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素在物理位置上也相邻。
image
优点:随机存取表中的元素。
缺点:插入和删除操作需要移动元素。

链式存储:线性表的链式存储是用通过指针链接起来的结点来存储数据元素。
存储各数据元素的结点的地址并不要求是连续的,因此存储数据元素的同时必须存储元素之间的逻辑关系。另外,结点空间只有在需要的时候才申请无须事先分配。
image
image

单链表:从头结点开始往后顺序遍历整个链表。
单向循环链表:可以从表中的任一结点开始遍历整个链表。
image
双向链表:除尾节点外,每一个节点的的 prior指针都指向前一个节点除头节点外,每一个节点的 next指针 都指向后一个节点
image
双向循环链表:跟单向循环链表一样,双向循环链表其实节点结构不变只是首尾相连而已
image

先进后出
顺序存储:预先申请栈空间,栈满则元素不能入栈.
image
栈的链式存储:用链表表示栈,用链表实现的栈称为链栈。由于栈中元素的插入和删除仅在栈顶一端进行,因此不必另外设置头指针,链表的头指针就是栈顶指针。
image

栈 递归

image

栈 递归

算符优先关系表

  • <:01低于02
  • =:01等于02
  • >:01高于02
  • 空白:表达式出错
    image
    【基本运算规则】
  • 准备两个栈分别放置操作数和操作符
  • 表达式的前后加#号,#号作为操作符优先压入栈中取到表达式的下一个运算符后,需和栈顶的运算符比较:
    • (优先级比较)栈顶运算符<当前运算符,当前运算符进栈,读下一个运算符
    • (优先级比较)栈顶运算符=当前运算符,栈顶运算符出栈,读下一个运算符
    • (优先级比较)栈顶运算符>当前运算符,运用栈顶运算符结合操作数进行计算,计算结果压入操作数栈。

队列

先进先出
顺序队列:队列的顺序存储结构又称为顺序队列,它也是利用一组地址连续的存储单元存放队列中的元素。由于队列中元素的插入和删除限定在表的两端进行,因此设置队头指针和队尾指针,分别指出当前的队头和队尾
image
循环队列:循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。
image

循环队列特征

入队操作:
入队时,将元素插入到尾指针指向的位置,并将尾指针向后移动一位。
如果尾指针已经到达数组的末尾,则将其移到数组的开头(即循环队列的环形特性),以实现循环利用。
出队操作:
出队时,将头指针指向的元素取出,并将头指针向后移动一位。
如果头指针已经到达数组的末尾,则将其移到数组的开头。
队列长度:
队列长度等于尾指针位置减去头指针位置,但需要注意循环队列中可能存在两种情况:
当rear>front时,长度为rear-front;
当rear<front时,长度为rear-front+数组长度。

数据结构-哈希表

数据结构-二叉树

(1)父亲、孩子和兄弟
(2)结点的度
(3)叶子结点
(4)内部结点
(5)层次
(6)树的高度
image

二叉树种类

满二叉树:二叉树中每个非叶子结点都有两个非空的孩子结点。
完全二叉树:若设二叉树的深度为h,除第 h层外,其它各层(1~h-1)的结点数都达到最大个数,第h层所有的结点都连续集中在最左边
这就是完全二叉树。
非完全二叉树:不满足完全二叉树性质的均是非完全二叉树。
image

二叉树高度与结点关系

在二叉树的第i层上最多有211个结点(i≧1)
深度为k的二叉树最多有2k-1个结点

二叉树度与结点关系

在对于任何一棵二叉树,如果其叶子结点数为 No度为2 的结点数为N,则No=N1+1。

数组结构-数组与矩阵

image
按行存储:
Am,n= [[a11a12.an],[az1a22.aznl,.,[amram...amn]]
按列存储:
Am,n=[[a11a21.an],[a1za2..am2],.,[a1na2n…amn]]

对称矩阵

image
如果矩阵 AT=A,则称 A为对称矩阵

上三角矩阵与下三角矩阵

image

三对角矩阵

三对角矩阵又称带状矩阵:当|i-j>1时,有a[i][j]=0,其中1<=i,j<n
image

图的定义及存储

无向完全图

若一个无向图具有n个顶点,而每个顶点与其他n-1个顶点之间都有边,则称之为无向完全图。无向完全图共有n(n-1)/2条边。
image

有向完全图

有n个顶点的有向完全图中弧的数目为n(n-1),即任意两个不同顶点之间都有方向相反的两个弧存在,
image

连通图与非连通图

在无向图G中,若从顶点V到顶点V:有路径,则称顶点V;和顶点V是连通的。如果无向图G中任意两个顶点都是连通的,则称其为连通图。无向图的极大连通子图称为G的连通分量。
image
image

强连通图

有向图中,若任意两个顶点 Vi和 Vi,满足从 Vi到 Vi以及从Vj到 Vi都连通,也就是都含有至少一条通路,则称图为强连通图。有向图中的极大连通子图称为有向图的强连通分量。
image

邻接矩阵

有向图中邻接矩阵不一定对称。
image
无向图的邻接矩阵是对称的。
image

邻接表

在图的邻接表中,为图的每个顶点建立一个链表,且第i个链表中的结点代表与顶点i相关联的一条边或由顶点i出发的一条弧。有n个顶点的图,需用n个链表表示,这n个链表的头指针通常由顺序线性表存储。
image

数据结构-图的遍历

图的遍历

图的遍历是指从某个顶点出发,沿着某条搜索路径对图中的所有顶点进行访问且只访问一次的过程。
深度优先DFS
V1,V2,V4,V8,V5,V3,V6,V7V1,V2,V5,V8,V4,V3,V7,V6
广度优先BFS
V1,V2,V3,V4,V5,V6,V7,V8
image

标签:结点,队列,链表,二叉树,顶点,数据结构,指针
From: https://www.cnblogs.com/xieshier/p/18377538

相关文章

  • 数据结构之树(Tree)(一)
    数据结构之树(Tree)(一)文章目录数据结构之树(Tree)(一)一、什么是树?1、有关树的基本概念和术语2、树的类型(二叉树)二、二叉树的实现1、构建一个二叉树节点2、插入(Insert)操作3、搜索(Search)操作一、什么是树?在计算机科学中,树是一种常用的数据结构,用来模拟具有层次关系的数......
  • 数据结构
    还是决定单独拎出来写...线段树好像自己从来没写过动态开点(?)动态开点顾名思义,动态的开线段树上的节点,以达到节省空间的目的,这种技巧我们常用在普通线段树无法开下/值域过大时可以使用,动态开点线段树上的区间修改需要用到标记永久化,当然标记需要满足结合律和交换律,互相覆盖的标......
  • 数据结构day04(队列 Queue 循环队列、链式队列)
    目录【1】队列Queue1》队列的定义 2》循环队列3》链式队列 【1】队列Queue1》队列的定义队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。队列是一种先进先出(FirstInFirstOut)的线性表,简称FIFO。允许插入的一端称为队尾,允许删除的一端......
  • 【数据结构】总结二叉树的概念以及存储结构
    目录1.树的概念及结构1.1树的名词定义1.2树的表示2.二叉树的概念及结构 2.1二叉树的概念2.2特殊的二叉树2.2.1满二叉树2.2.2完全二叉树2.3 二叉树的存储结构2.3.1顺序存储2.3.2链式存储3.选择题1.树的概念及结构1.1树的名词定义1.节点的度:......
  • 【数据结构】【模板】笛卡尔树
    笛卡尔树定义笛卡尔树每个节点有两种属性,一种是键值,一种是优先级。一般将位置作为键值,维护BST的性质,这样其中序遍历一定为\(1~n\)。一般将数值看作优先级,维护堆的性质。构建思路维护一个单调栈,表示现在的右链长度。我们将数组从前往后插入笛卡尔树。对于第\(i\)个......
  • 数据结构-时间、空间复杂度-详解
    数据结构-时间复杂度-详解1.前言1.1数据结构与算法1.2如何衡量一个算法的好坏1.3复杂度2.时间复杂度2.1是什么2.2大O符号只保留最高阶项不带系数常数次为`O(1)`2.3示例示例2.1示例2.2示例2.3示例2.42.4题目3.空间复杂度3.1是什么3.2大O符号3.3示例示例1示例2示例3示......
  • 数据结构--链表(单向链表--有头链表、无头链表)链表的插入、删除、修改、查找
    什么是链表?链表是一种基本的数据结构,用于存储一组数据元素。与数组不同,链表的元素在内存中并不连续存储。链表由一系列节点组成,每个节点包含以下两个主要部分:1.数据部分:存储节点所包含的数据。2.指针部分:存储指向下一个节点的指针(对于单向链表),或者存储指向前一个节点和下......
  • 数据结构之链表(看不懂你来找我)
    数据结构......
  • 知识改变命运 数据结构 【二叉树】
    1.树型结构(了解)1.1概念树是一种非线性的数据结构,它是由n(n>=0)个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。它具有以下的特点:有一个特殊的结点,称为根结点,根结点没有前驱结点除根结点外,其余结点被分成M......
  • 算法与数据结构——基本数据类型与编码
    基本数据类型基本数据类型是计算机CPU可以直接进行运算的类型,在算法中直接被使用,主要包括以下几种整数类型byte、short、int、long。浮点数类型float、double,用于表示小数字符类型char,用于表示各种语言的字母、标点符号甚至表情符号等。布尔类型bool,用于表示“是”与“否”......