![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 60
每日必喝拿铁
这个作者很懒,什么都没留下…
展开
-
(图6-22)Shortest Path [4]--C语言
int Nv;int Ne;从V到源S的最短距离应该存储在dist[V]中。如果无法从S到达V,则存储-1。如果W是沿着从S到V的最短路径在V之前访问的顶点,则path[V]=W。如果不能从S到达V,则path[S]=-1,并且我们有path[S]=-1。原创 2024-06-26 18:51:01 · 562 阅读 · 0 评论 -
(图6-21)Shortest Path [3]--C语言
int Nv;int Ne;从V到源S的最短距离应该存储在dist[V]中。如果无法从S到达V,则存储-1。从V到源S的不同最小路径的数量被假定存储在count[V]和count[S]=1中。原创 2024-06-26 18:46:47 · 222 阅读 · 0 评论 -
(图6-19)Shortest Path [1]--C语言
int Nv;int Ne;AdjList G;从V到源S的最短距离应该存储在dist[V]中。如果无法从S到达V,则存储-1。原创 2024-06-26 18:42:57 · 293 阅读 · 0 评论 -
(图6-15)邻接表存储图的广度优先遍历--C语言
其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */邻接点下标指向下一个邻接点的指针顶点表头结点的定义边表头指针AdjList是邻接表类型图结点的定义 */PtrToGNode;int Nv;顶点数int Ne;边数AdjList G;邻接表以邻接表方式存储的图类型 */函数BFS应从第S个顶点出发对邻接表存储的图Graph进行广度优先搜索,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按邻接表顺序访问。原创 2024-06-26 17:49:47 · 392 阅读 · 0 评论 -
(图6-11)邻接矩阵存储图的深度优先遍历--C语言
其中MGraph是邻接矩阵存储的图,定义如下:PtrToGNode;int Nv;顶点数int Ne;边数邻接矩阵以邻接矩阵存储的图类型 */函数DFS应从第V个顶点出发递归地深度优先遍历图Graph,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按序号递增的顺序。题目保证V是图中的合法顶点。原创 2024-06-26 17:47:07 · 132 阅读 · 0 评论 -
(图6-10)Count Connected Components--C语言
int Nv;int Ne;AdjList G;原创 2024-06-26 17:45:09 · 338 阅读 · 0 评论 -
(图6-9)Strongly Connected Components--C语言
Write a program to find the strongly connected components in a digraph.where Graph is defined as the following:Here void (*visit)(Vertex V) is a function parameter that is passed into StronglyConnectedComponents to handle (print with a certain format) eac原创 2024-06-26 17:42:25 · 279 阅读 · 0 评论 -
(图6-1)Vertex Degrees--C语言
int Nv;int Ne;AdjList G;原创 2024-06-26 16:34:07 · 262 阅读 · 0 评论 -
(堆6-6)哈夫曼树及哈夫曼编码--C语言
其中 upbound 编号,HT是哈夫曼树,HC是哈夫曼编码,w是权值,n是叶子节点个数。原创 2024-06-26 15:46:46 · 101 阅读 · 0 评论 -
(堆6-3)Percolate Up and Down--C语言
int Size;原创 2024-06-26 15:20:32 · 105 阅读 · 0 评论 -
(堆6-1)AVL Insertion--C语言
int Key;int Height;原创 2024-06-26 15:18:15 · 223 阅读 · 0 评论 -
(链表6-10)学生成绩链表处理--C语言
函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。链表节点结构定义如下:学号姓名成绩指向下个结点的指针输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。原创 2024-06-26 14:54:35 · 257 阅读 · 0 评论 -
(链表6-13)链表拼接--C语言
其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链表的头指针。原创 2024-06-26 14:37:33 · 144 阅读 · 0 评论 -
(链表6-16)求链表的倒数第m个元素--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L是给定的带头结点的单链表;函数Find要将L的倒数第m个元素返回,并不改变原链表。如果这样的元素不存在,则返回一个错误标志ERROR。原创 2024-06-26 14:14:08 · 182 阅读 · 0 评论 -
(链表6-8)共享后缀的链表--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L1和L2都是给定的带头结点的单链表。函数Suffix应返回L1和L2的公共后缀的起点位置。原创 2024-06-26 14:01:34 · 289 阅读 · 0 评论 -
(二叉树及其遍历6-3)先序输出叶结点--C语言
其中BinTree结构定义如下:函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。原创 2024-06-25 13:27:02 · 129 阅读 · 0 评论 -
(二叉树及其遍历6-2)二叉树的遍历--C语言
其中BinTree结构定义如下:要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。原创 2024-06-25 13:23:33 · 212 阅读 · 0 评论 -
(二叉树及其遍历6-1)求二叉树高度--C语言
其中BinTree结构定义如下:要求函数返回给定二叉树BT的高度值。原创 2024-06-25 12:30:50 · 173 阅读 · 0 评论 -
出栈序列的合法性--C语言
给定一个最大容量为 m 的堆栈,将 n 个数字按 1, 2, 3, …, n 的顺序入栈,允许按任何顺序出栈,则哪些数字序列是不可能得到的?例如给定 m=5、n=7,则我们有可能得到{ 1, 2, 3, 4, 5, 6, 7 },但不可能得到{ 3, 2, 1, 7, 5, 6, 4 }。原创 2024-06-24 13:33:59 · 103 阅读 · 0 评论 -
汉诺塔的非递归实现--C语言
借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。原创 2024-06-24 13:17:38 · 114 阅读 · 0 评论 -
堆栈模拟队列--C语言
设已知有两个堆栈S1和S2,请用这两个堆栈模拟出一个队列Q。所谓用堆栈模拟队列,实际上就是通过调用堆栈的下列操作函数:int IsFull(Stack S):判断堆栈S是否已满,返回1或0;int IsEmpty (Stack S ):判断堆栈S是否为空,返回1或0;void Push(Stack S, ElementType item ):将元素item压入堆栈S;ElementType Pop(Stack S ):删除并返回S的栈顶元素。原创 2024-06-23 21:32:33 · 141 阅读 · 0 评论 -
栈操作的合法性--C语言
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。原创 2024-06-23 21:21:57 · 280 阅读 · 0 评论 -
(栈6-2)另类堆栈--C语言
其中Stack结构定义如下:Data;存储元素的数组栈顶指针堆栈最大容量 */注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果队列是空的,则Pop函数必须输出“Stack Empty”,并且返回ERROR。原创 2024-06-23 21:14:27 · 128 阅读 · 0 评论 -
(栈6-1)在一个数组中实现两个堆栈--C语言
其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果某堆栈是空的,则Pop函数必须输出“Stack Tag Empty”(其中Tag是该堆栈的编号),并且返回ERROR。原创 2024-06-23 21:09:13 · 197 阅读 · 0 评论 -
(链表6-4)单链表逆转--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。原创 2024-06-23 15:28:11 · 188 阅读 · 0 评论 -
(散列查找6-2)分离链接法的删除操作函数--C语言
其中HashTable是分离链接散列表,定义如下:HashTable;散列表类型散列表结点定义表的最大长度List Heads;指向链表头结点的数组 */函数Delete应根据裁判定义的散列函数Hash( Key, H->TableSize )从散列表H中查到Key的位置并删除之,然后输出一行文字:Key is deleted from list Heads[i],其中Key是传入的被删除的关键词,i是Key所在的链表的编号;最后返回true。原创 2024-06-21 21:39:20 · 235 阅读 · 0 评论 -
(散列查找6-1)线性探测法的查找函数--C语言
其中HashTable是开放地址散列表,定义如下:#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度关键词类型用整型散列地址类型数据所在位置与散列地址是同一类型散列单元状态类型,分别对应:有合法元素、空单元、有已删除元素散列表单元类型存放元素单元状态 */HashTable;散列表类型散列表结点定义表的最大长度 */CellCells;存放散列单元数据的数组 */原创 2024-06-21 15:05:07 · 402 阅读 · 0 评论 -
(二叉搜索树7-1)是否同一棵二叉搜索树--C语言
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。原创 2024-05-11 20:54:02 · 261 阅读 · 0 评论 -
(二叉搜索树6-12)The Kth Largest X in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接在序列中找输入的数,如果找到了直接返回(count-下标),count是序列的总数,因为序列从0开始;如果没找到直接返回0。原创 2024-04-15 15:38:27 · 409 阅读 · 0 评论 -
(二叉搜索树6-11)The Kth Smallest X in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接在序列中找输入的数,如果找到了直接返回(下标-1),因为序列从0开始;如果没找到直接返回0。原创 2024-04-15 15:35:54 · 463 阅读 · 0 评论 -
(二叉搜索树6-10)The Kth Largest in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接返回序列中倒数第k个数(下标为count-k),count为序列总数。原创 2024-04-15 15:29:21 · 1613 阅读 · 0 评论 -
(二叉搜索树6-9)The Kth Smallest in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接返回序列中第k个数(下标为k-1)。原创 2024-04-15 15:20:13 · 1266 阅读 · 0 评论 -
(二叉搜索树6-8)CheckBST[3]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出倒数第k个数,即为第k大的数。原创 2024-04-15 15:09:53 · 1639 阅读 · 0 评论 -
(二叉搜索树6-7)CheckBST[2]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出第k个数,即为第k小的数。原创 2024-04-15 15:06:17 · 566 阅读 · 0 评论 -
(二叉搜索树6-6)CheckBST[1]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出倒数第k个数,即为第k大的数。原创 2024-04-15 15:02:19 · 608 阅读 · 0 评论 -
(二叉搜索树6-5)No Greater Than X in BST--C语言
先向右边找最大的数,然后和X比较,比X大的数不输出,小于等于X的数输出。原创 2024-04-13 18:16:49 · 180 阅读 · 0 评论 -
(二叉搜索树6-4)No Less Than X in BST--C语言
先向右找最大的数,然后判断该数是否大于X,大于或等于就输出,小于就直接退出函数。原创 2024-04-13 18:10:20 · 251 阅读 · 0 评论 -
(二叉搜索树6-3)二叉搜索树中的最近公共祖先--C语言
其中Tree的定义如下:int Key;Tree Left;函数LCA须返回树T中两个结点u和v的最近公共祖先结点的键值。若u或v不在树中,则应返回ERROR。原创 2024-04-13 17:13:11 · 214 阅读 · 0 评论 -
(二叉搜索树6-2)是否二叉搜索树--C语言
其中BinTree结构定义如下:函数IsBST须判断给定的T是否二叉搜索树,即满足如下定义的二叉树:定义:一个二叉搜索树是一棵二叉树,它可以为空。非空左子树的所有键值小于其根结点的键值。非空右子树的所有键值大于其根结点的键值。左、右子树都是二叉搜索树。如果T是二叉搜索树,则函数返回true,否则返回false。原创 2024-04-13 16:57:48 · 268 阅读 · 0 评论 -
(二叉搜索树6-1)二叉搜索树的操作集--C语言
函数Insert将X插入二叉搜索树BST并返回结果树的根结点指针;函数Delete将X从二叉搜索树BST中删除,并返回结果树的根结点指针;如果X不在树中,则打印一行Not Found并返回原树的根结点指针;函数Find在二叉搜索树BST中找到X,返回该结点的指针;如果找不到则返回空指针;函数FindMin返回二叉搜索树BST中最小元结点的指针;函数FindMax返回二叉搜索树BST中最大元结点的指针。原创 2024-04-10 18:01:27 · 287 阅读 · 0 评论