数据结构
文章平均质量分 58
书香恋仁心
万古如长夜
展开
-
数据结构之环形队列——java实现
为了方便,我们将 font指向队列第一个元素,rear指向队列最后一个元素的后一位package com.clear.queue;import java.util.Scanner;/** * 用数组模拟队列 */public class CircleArrayQueueDemo { public static void main(String[] args) { // 测试 System.out.println("—————测试数组模拟环形数组——原创 2022-05-23 22:01:47 · 186 阅读 · 0 评论 -
数据结构——java实现
用数组模拟队列package com.clear.queue;import java.util.Scanner;/** * 用数组模拟队列 */public class CircleArrayQueueDemo { public static void main(String[] args) { // 测试 System.out.println("—————测试数组模拟环形数组—————"); CircleArrayQueue qu原创 2022-05-23 21:58:33 · 316 阅读 · 0 评论 -
算法图解——狄克斯特拉算法
最短路径不带权图 ——> 广度优先搜索带权图 ——> 狄克斯特拉(该算法只适用于有向无环图)狄克斯特算法大致分为以下步骤:找出最权重最小的点,也就是我们从家出发,到那个位置,所花费的时间最短。 计算该节点前往各个邻居节点所花费的时间。 重复前面的过程 到达学校(终点) 然后沿着父节点进行溯源,这样就可以得到时间最短路径还没写完,先停了...原创 2022-04-04 21:23:57 · 419 阅读 · 0 评论 -
数据结构——图的存储
图的存储结构需要存储顶点和顶点之间的关系(边)。常用的图的存储结构有邻阶矩阵和邻接表。邻接矩阵存储方法不带权的无向图 | 1 若(i,j)∈ E(G)a[i][j] = | | 0 其他带权的无向图 | w 若 i != ...原创 2021-12-15 15:53:55 · 1042 阅读 · 0 评论 -
数据结构——线索二叉树
树的定义:树(tree)是由n(n>=0)个结点或元素)构成的有限集合(记为T)。n=0,它是一颗空树,这是树的特例。 n>0,这n个结点中有且仅有一个结点作为树的根结点,简称为根(root),其余结点可分 为m(m>=0)个互不相交的有限集T1,T2,.......,Tn,其中每个子集本身又是一颗符合定义的 树,称为根结点的子树(subtree)。树的逻辑表达方法: 1.树...原创 2021-12-04 20:40:00 · 828 阅读 · 0 评论 -
数据结构——哈夫曼树
路径长度:从树中的一个结点到另一个结点之间的分支构成这两个结点之间的路径,路径是的分支数目称做路径长度。哈夫曼树的概述: 给树的结点赋予某种树值,称此数值为结点的权。 从根结点到该结点之间的路径长度与该结点的权的乘积称为带权路径长度(Weighted Path Lenght,WPL)。 树中所有叶子结点的带权路径长度之和称为该树的带权路径长度,记为: 在n0个带权叶子结点构成的所有二叉...原创 2021-12-04 20:23:18 · 1937 阅读 · 0 评论 -
数据结构——二叉树的存储结构以及基本运算【c语言版】
与线性表一样,二叉树也有顺序存储结构与链式存储结构二叉树的顺序存储原创 2021-12-02 15:28:46 · 1482 阅读 · 0 评论 -
数据结构——顺序串【c语言版】
串(string)是由零个或多个字符组成的有限序列。含零个字符的串称为空串。子串:一个串中任意个连续字符组成的序列称为该串的子串。子串的个数:n(n+1)/2+1子串的位置:子串的第一个字符在主串的序号。注:区分空串与空白串:空白串长度不为零,串中有若干空格与线性表一样,串也有顺序存储结构与链式存储结构,前者简称顺序串,后者简称链式串。 顺序串的存储方式有两种: 1. 非紧缩格式(其存储密度小),每个字存储一个字符,比较浪费存...原创 2021-11-28 15:06:14 · 1720 阅读 · 0 评论 -
数据结构——树与二叉树
树的定义:树(tree)是由n(n>=0)个结点或元素)构成的有限集合(记为T)。n=0,它是一颗空树,这是树的特例。 n>0,这n个结点中有且仅有一个结点作为树的根结点,简称为根(root),其余结点可分 为m(m>=0)个互不相交的有限集T1,T2,.......,Tn,其中每个子集本身又是一颗符合定义的 树,称为根结点的子树(subtree)。树的逻辑表达方法: 1.树...原创 2021-11-25 20:36:56 · 1878 阅读 · 0 评论 -
数据结构——链式队列【c语言版】
队列(quque)简称队,只允许在表的一端输入,在表的另一端删除(操作受限制的线性表),把进行插入的一段叫做队尾(表尾),把进入删除的一端叫做队首或队头(表头)。队列最主要的特点:先进先出,FIFO(first in first out)队列有其实有三种:顺序队列、循环队列、链式队列 采用链式存储结构实现的队列称为链队 下面是采用单链表来实现链式队列的过程: 在链队中只允许单链表的表头进行删除操作(出队),表尾进行插入操作(入队),因此需要...原创 2021-11-22 12:25:41 · 7010 阅读 · 2 评论 -
数据结构——循环队列【c语言版】
队列(quque)简称队,只允许在表的一端输入,在表的另一端删除(操作受限制的线性表),把进行插入的一段叫做队尾(表尾),把进入删除的一端叫做队首或队头(表头)。队列最主要的特点:先进先出,FIFO(first in first out)队列有其实有三种:顺序队列、循环队列、链式队列 为了避免顺序队列中出现的假溢出现象,我们只需要把数组的前后端连接起来,形成一个环形数组,在逻辑上把这个环称为环形队列或者循环队列。 下面是循环队列的实现过程: ...原创 2021-11-21 14:36:41 · 2088 阅读 · 0 评论 -
数据结构——顺序队列【c语言版】
队列(quque)简称队,只允许在表的一端输入,在表的另一端删除(操作受限制的线性表),把进行插入的一段叫做队尾(表尾),把进入删除的一端叫做队首或队头(表头)。队列最主要的特点:先进先出,FIFO(first in first out)队列有其实有三种:顺序队列、循环队列、链式队列 下面是采用采用顺序存储结构来实现的顺序队 假设栈的元素个数最大不超过正整数MaxSize,所以元素具有同一数据类型(ElemType),用下来方式来声明顺序栈的类型SqQueu...原创 2021-11-21 11:12:28 · 4504 阅读 · 0 评论 -
数据结构——链式栈【c语言版】
栈(stack)是一种只能在一端插入或删除操作的线性表。(既操作受限的线性表)栈只能在表尾插入或删除元素,表尾就是栈的栈顶,表头就是栈底栈的主要特点:LIFO(last in first out) "后进先出"栈可以采用顺序存储结构(顺序栈)和链式存储结构(链式栈)既然栈可以用顺序存储结构来实现,那为什么还需要链式栈呢?链栈的优点是不存在栈满上溢的情况 规定,链式栈的所以操作都是在单链表的表头进行的(因为给定链式栈以后,我们可以知道头结点的...原创 2021-11-20 20:11:14 · 7007 阅读 · 4 评论 -
数据结构——顺序栈【c语言版】
栈(stack)是一种只能在一端插入或删除操作的线性表。栈的主要特点:LIFO(last in first out) "后进先出"栈可以采用顺序存储结构(顺序栈)和链式存储结构(链式栈) 假设栈的元素个数最大不超过正整数MAXSIZE,所以元素具有同一数据类型(ElemType),用下来方式来声明顺序栈的类型SQStack:#define MAXSIZE 128typedef int ElemType;typedef struct{ ElemType data[M...原创 2021-11-20 14:28:52 · 4931 阅读 · 0 评论 -
数据结构——循环双链表【c语言版】
把双链表改为循环双链表只需要将双链表的尾结点指针由原来的空改为指向头结点,把头结点的prior指针域改为指向尾结点足以,这样就把整个双链表形成了两个环。如图所示:循环双链表的操作与双链表基本一致,差别在于遍历链表时,判别当前指针p是否指向表尾结点的终止条件不同: 双链表:p->next != NULL 循环双链表:p->next != h为空条件不同:双链表:h->next==NULL &...原创 2021-11-19 17:28:52 · 736 阅读 · 0 评论 -
数据结构——双链表【c语言版】
在单链表中,只存在一个指向后继的指针域,由此,从某个结点出发只能向后寻查其他结点。若要寻查结点的前驱,必须从表头出发,这样非常的耗时,利用双链表就可以很好的解决这个问题。 对于双链表,采用类似于单链表的类型声明,其结点类型DLinkList的声明如下:typedef int ElemType;typedef struct Node{ ElemType data;//存储线性表的元素值(1个) struct Node *next;//存储后继元素节点的地址 ...原创 2021-11-19 17:07:02 · 1258 阅读 · 0 评论 -
数据结构——循环单链表【c语言版】
循环链表包括循环单链表和循环双链表循环单链表的结点类型与非循环单链表相同,把非循环单链表改成循环单链表只需要将非循环单链表的尾结点next指针由原来的NULL改为指向头节点,自此就将非循环单链表形成看一个环,从表中的任一结点出发均可找到链表中其他的结点,这就是带头节点的循环单链表。循环单链表的操作与单链表基本一致,差别在于遍历链表时,判别当前指针p是否指向表尾结点的终止条件不同: 单链表:p->next != NULL 循环单链表:p->next !=...原创 2021-11-19 16:15:43 · 2898 阅读 · 0 评论 -
数据结构 ——顺序表【c语言版】
线性表:具有相同特性的数据元素(既同类型数据)的一个有限序列.注:同一线性表中的元素必定具有相同特性线性表的特性:1.有穷性 2.一致性 3.序列性线性表的最本质特征:有唯一的前驱和后继线性表的顺序存储结构———顺序表顺序存储结构——逻辑上相邻的元素,在物理上也相邻在c语言中,顺序表通常用数组来存储,这与python中的列表不同,数组是给定长度的,数组中元素的地址也是相邻的,且数组中的元素类型一定要相同,而列表list是的长度理论上是可以无限添加的,(因为pyt...原创 2021-11-19 14:06:53 · 6115 阅读 · 0 评论 -
数据结构 ——单链表【c语言版】
线性表:具有相同特性的数据元素(既同类型数据)的一个有限序列.注:同一线性表中的元素必定具有相同特性线性表的特性:1.有穷性 2.一致性 3.序列性线性表的最本质特征:有唯一的前驱和后继线性表的链式存储结构称为链表链式存储:逻辑上相邻的数据元素,物理上不一定相邻在单链表中,假设每个节点的类型用SLinkList表示,它包括存储元素的数据域(data),其类型用通用类型标识符ElemType表示,还包括存储后继节点位置的指针域(next)。SLinkList类型声明如下ty..原创 2021-11-18 15:33:35 · 1781 阅读 · 1 评论