01 2020 档案
摘要:拓扑排序是对有向无圈图的一种排序,它使得如果存在一条从vi到vj的路径,那么在排序中vj出现在vi后面。 首先,对每一个顶点计算它的入度,记录在一个数组中,然后,将所有入度为0的顶点放入一个初始为空的队列中。当队列不空时,删除一个顶点v,并将与v邻接的所有的顶点的入度减1,只要一个顶点的入度降为0,
阅读全文
摘要:1 #include <iostream> 2 using namespace std; 3 4 #define INFINITY 65536//无穷大 5 #define MAX_VERTEX_NUM 10//最大顶点个数 6 typedef enum{DG,DN,UDG,UDN}GraphKin
阅读全文
摘要:1 #include <iostream>、 2 using namespace std; 3 4 //插入排序 5 void insert_sort(int data[],int n) 6 { 7 int i, j,tmp; 8 for (int i = 1; i < n; i++)//进行n-1
阅读全文
摘要:二叉堆 性质 1)结构性质 二叉堆是完全二叉树,完全二叉树的结点编号是有规律的,可以用数组来表示。从i=1开始放置元素(i=0用于放置一个比堆中所有元素都大/小的值,作为标志),对于数组i上的元素,其左儿子在位置2i上,右儿子在2i+1上,其父亲则在i/2上 2)堆序性 使操作被快速执行的性质,由于
阅读全文
摘要:以下为学习笔记 散列的插入、删除、查找时间为O(1),因为其不是像树一样通过比较来进行上面的操作,而是直接进行。 理想的散列表结构:一个包含有关键字的具有固定大小的数组。 表的大小记为TableSize,index从0到TableSize-1。 散列函数 (1)散列函数:每个关键字通过散列函数映射到
阅读全文
摘要:当一个结点被访问时,它很可能不久再被访问到,伸展树就是为了达到这个目的的,其基本想法是通过一系列AVL树的旋转使被访问的结点被放到根上。如果这个结点很深,那么其路径上的许多结点也相对较深,通过重新构造可以使对这些结点的进一步访问花费的时间减少。 代码如下: 1 #include <iostream>
阅读全文
摘要:二叉树 代码如下: 1 #include <iostream> 2 #include <stdlib.h> 3 #include <vector> 4 using namespace std; 5 6 7 struct BiTreeNode 8 { 9 int data; 10 struct BiT
阅读全文
摘要:问题的描述 N个人,编号为1~N,从第一个人开始报数到M,报到M的人移除,剩下的人从被移除的人后面继续从一到M报数,报到M的移除,依次类推,求依次被移除的人的编号。 方法一 使用队列来解决。 因为我们处理的是n个元素里面的第m个元素,如果每次从队列里一边取元素,一边又加到队列的末尾,数到第m的时候,
阅读全文
摘要:这里初始化的队列的front一直指向队头,rear一直指向队尾。 1 #include "pch.h" 2 #include <iostream> 3 #include <stdlib.h> 4 using namespace std; 5 6 #define MinQueueSize 5 //限定
阅读全文
摘要:1 #include "pch.h" 2 #include <iostream> 3 #include <stdlib.h> 4 using namespace std; 5 6 #define EmptyTOS -1 7 #define MinStackSize 5 //限定栈的最小容量 8 #d
阅读全文
摘要:1 #include "pch.h" 2 #include <iostream> 3 #include <stdlib.h> 4 using namespace std; 5 6 struct Node 7 { 8 int ele; 9 struct Node* next; 10 }; 11 typ
阅读全文

浙公网安备 33010602011771号