- 博客(56)
- 收藏
- 关注
原创 (图6-28)Topological Sort--C语言
int Nv;int Ne;AdjList G;拓扑顺序应该存储在TopOrder[]中,其中TopOrder[i]是结果序列中的第i个顶点。如果图中有一个循环,拓扑排序就不可能成功——在这种情况下,TopSort必须返回false;否则返回true。请注意,拓扑顺序可能不是唯一的,但官方的输入保证了结果的唯一性。
2024-06-28 09:15:24
571
1
原创 (图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
912
原创 (图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
361
原创 (图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
399
原创 (图6-15)邻接表存储图的广度优先遍历--C语言
其中LGraph是邻接表存储的图,定义如下:/* 邻接点的定义 */邻接点下标指向下一个邻接点的指针顶点表头结点的定义边表头指针AdjList是邻接表类型图结点的定义 */PtrToGNode;int Nv;顶点数int Ne;边数AdjList G;邻接表以邻接表方式存储的图类型 */函数BFS应从第S个顶点出发对邻接表存储的图Graph进行广度优先搜索,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按邻接表顺序访问。
2024-06-26 17:49:47
657
原创 (图6-11)邻接矩阵存储图的深度优先遍历--C语言
其中MGraph是邻接矩阵存储的图,定义如下:PtrToGNode;int Nv;顶点数int Ne;边数邻接矩阵以邻接矩阵存储的图类型 */函数DFS应从第V个顶点出发递归地深度优先遍历图Graph,遍历时用裁判定义的函数Visit访问每个顶点。当访问邻接点时,要求按序号递增的顺序。题目保证V是图中的合法顶点。
2024-06-26 17:47:07
447
原创 (图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
361
原创 (链表6-10)学生成绩链表处理--C语言
函数createlist利用scanf从输入中获取学生的信息,将其组织成单向链表,并返回链表头指针。链表节点结构定义如下:学号姓名成绩指向下个结点的指针输入为若干个学生的信息(学号、姓名、成绩),当输入学号为0时结束。函数deletelist从以head为头指针的链表中删除成绩低于min_score的学生,并返回结果链表的头指针。
2024-06-26 14:54:35
435
原创 (链表6-13)链表拼接--C语言
其中list1和list2是用户传入的两个按data升序链接的链表的头指针;函数mergelists将两个链表合并成一个按data升序链接的链表,并返回结果链表的头指针。
2024-06-26 14:37:33
234
原创 (链表6-16)求链表的倒数第m个元素--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L是给定的带头结点的单链表;函数Find要将L的倒数第m个元素返回,并不改变原链表。如果这样的元素不存在,则返回一个错误标志ERROR。
2024-06-26 14:14:08
279
原创 (链表6-8)共享后缀的链表--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L1和L2都是给定的带头结点的单链表。函数Suffix应返回L1和L2的公共后缀的起点位置。
2024-06-26 14:01:34
462
原创 (二叉树及其遍历6-3)先序输出叶结点--C语言
其中BinTree结构定义如下:函数PreorderPrintLeaves应按照先序遍历的顺序输出给定二叉树BT的叶结点,格式为一个空格跟着一个字符。
2024-06-25 13:27:02
365
原创 (二叉树及其遍历6-2)二叉树的遍历--C语言
其中BinTree结构定义如下:要求4个函数分别按照访问顺序打印出结点的内容,格式为一个空格跟着一个字符。
2024-06-25 13:23:33
301
原创 出栈序列的合法性--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
481
原创 汉诺塔的非递归实现--C语言
借助堆栈以非递归(循环)方式求解汉诺塔的问题(n, a, b, c),即将N个盘子从起始柱(标记为“a”)通过借助柱(标记为“b”)移动到目标柱(标记为“c”),并保证每个移动符合汉诺塔问题的要求。
2024-06-24 13:17:38
775
2
原创 堆栈模拟队列--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
198
原创 栈操作的合法性--C语言
假设以S和X分别表示入栈和出栈操作。如果根据一个仅由S和X构成的序列,对一个空堆栈进行操作,相应操作均可行(如没有出现删除时栈空)且最后状态也是栈空,则称该序列是合法的堆栈操作序列。请编写程序,输入S和X序列,判断该序列是否合法。
2024-06-23 21:21:57
999
原创 (栈6-2)另类堆栈--C语言
其中Stack结构定义如下:Data;存储元素的数组栈顶指针堆栈最大容量 */注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果队列是空的,则Pop函数必须输出“Stack Empty”,并且返回ERROR。
2024-06-23 21:14:27
240
原创 (栈6-1)在一个数组中实现两个堆栈--C语言
其中Tag是堆栈编号,取1或2;MaxSize堆栈数组的规模;Stack结构定义如下:注意:如果堆栈已满,Push函数必须输出“Stack Full”并且返回false;如果某堆栈是空的,则Pop函数必须输出“Stack Tag Empty”(其中Tag是该堆栈的编号),并且返回ERROR。
2024-06-23 21:09:13
562
原创 (链表6-4)单链表逆转--C语言
其中List结构定义如下:PtrToNode;存储结点数据指向下一个结点的指针定义单链表类型 */L是给定单链表,函数Reverse要返回被逆转后的链表。
2024-06-23 15:28:11
497
原创 (散列查找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
374
原创 (散列查找6-1)线性探测法的查找函数--C语言
其中HashTable是开放地址散列表,定义如下:#define MAXTABLESIZE 100000 /* 允许开辟的最大散列表长度关键词类型用整型散列地址类型数据所在位置与散列地址是同一类型散列单元状态类型,分别对应:有合法元素、空单元、有已删除元素散列表单元类型存放元素单元状态 */HashTable;散列表类型散列表结点定义表的最大长度 */CellCells;存放散列单元数据的数组 */
2024-06-21 15:05:07
635
原创 (二叉搜索树7-1)是否同一棵二叉搜索树--C语言
给定一个插入序列就可以唯一确定一棵二叉搜索树。然而,一棵给定的二叉搜索树却可以由多种不同的插入序列得到。例如分别按照序列{2, 1, 3}和{2, 3, 1}插入初始为空的二叉搜索树,都得到一样的结果。于是对于输入的各种插入序列,你需要判断它们是否能生成一样的二叉搜索树。
2024-05-11 20:54:02
444
原创 (二叉搜索树6-12)The Kth Largest X in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接在序列中找输入的数,如果找到了直接返回(count-下标),count是序列的总数,因为序列从0开始;如果没找到直接返回0。
2024-04-15 15:38:27
442
原创 (二叉搜索树6-11)The Kth Smallest X in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接在序列中找输入的数,如果找到了直接返回(下标-1),因为序列从0开始;如果没找到直接返回0。
2024-04-15 15:35:54
522
原创 (二叉搜索树6-10)The Kth Largest in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接返回序列中倒数第k个数(下标为count-k),count为序列总数。
2024-04-15 15:29:21
1684
原创 (二叉搜索树6-9)The Kth Smallest in BST--C语言
用中序遍历得到序列,因为是二叉搜索树,则该序列一定是递增的,所以直接返回序列中第k个数(下标为k-1)。
2024-04-15 15:20:13
1349
原创 (二叉搜索树6-8)CheckBST[3]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出倒数第k个数,即为第k大的数。
2024-04-15 15:09:53
1682
原创 (二叉搜索树6-7)CheckBST[2]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出第k个数,即为第k小的数。
2024-04-15 15:06:17
613
原创 (二叉搜索树6-6)CheckBST[1]--C语言
用中序遍历得到序列,判断是否二叉树就直接判断序列是否递增,如果不是搜索二叉树,就求树的高度;如果是,则输出倒数第k个数,即为第k大的数。
2024-04-15 15:02:19
656
原创 Wifi密码(15分)--C语言
下面是微博上流传的一张照片:“各位亲爱的同学们,鉴于大家有时需要使用 wifi,又怕耽误亲们的学习,现将 wifi 密码设置为下列数学题答案:A-1;B-2;C-3;D-4;请同学们自己作答,每两日一换。!~”—— 老师们为了促进学生学习也是拼了…… 本题就要求你写程序把一系列题目的答案按照卷子上给出的对应关系翻译成 wifi 的密码。这里简单假设每道选择题都有 4 个选项,有且只有 1 个正确答案。
2024-04-14 20:00:15
631
1
原创 图像过滤(15分)--C语言
图像过滤是把图像中不重要的像素都染成背景色,使得重要部分被凸显出来。现给定一幅黑白图像,要求你将灰度值位于某指定区间内的所有像素颜色都用一种指定的颜色替换。
2024-04-14 19:40:55
338
1
原创 组合数的和(15分)--C语言
给定 N 个非 0 的个位数字,用其中任意 2 个数字都可以组合成 1 个 2 位的数字。要求所有可能组合出来的 2 位数字的和。例如给定 2、5、8,则可以组合出:25、28、52、58、82、85,它们的和为330。
2024-04-14 19:32:40
208
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人