![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构
文章平均质量分 93
KRYON!
这个作者很懒,什么都没留下…
展开
-
DFS生成森林代码
DFS生成森林代码typedef char TElemType;typedef struct CSNode{ TElemType data; CSNode *firstChild, *nextSibling;}CSNode,*CSTree; void DFSForest(Graph G,CSTree &T){ T = NULL; //生成森林的根 bool visited[MAXSIZE]; //标记 for(int i = 0; i < G.vexnum; i+原创 2020-12-16 15:18:02 · 602 阅读 · 0 评论 -
考研数据结构--排序汇总(自用)
1、插入排序:1)直接插入排序:哨兵版:void insertSort(int A[], int n){ int i, j; for(i = 2; i <= n; i++) { A[0] = A[i]; //负责为哨兵,A[0]不存放元素 for(j = i - 1; A[0] < A[j]; j--) A[j+1] = A[j]; A[j+1] = A[0]; }}普通版:void insertSort2(int A[], int n原创 2020-11-19 14:57:33 · 762 阅读 · 0 评论 -
考研数据结构--严版图相关代码 自用
1、BFSvoid BFSTraverse(Graph G,Status (*visit)(int v)){ for(int v = 0; v < G.vexNum; v++) visited[v] = false; InitQueue(Q); for(int v = 0; v < G.vexNum; v++) { if(!visited[v]) { visited[v] = true; visited(v); EnQueue(Q, v); while(!原创 2020-12-16 21:32:15 · 525 阅读 · 0 评论 -
[leetcode]648. 单词替换 --前缀树(字典树)应用
struct TrieNode{ bool isEnd; TrieNode *next[26]; TrieNode() { isEnd = false; memset(next, 0, sizeof(next)); }};class Dict{private: TrieNode *root;public...原创 2020-02-13 22:35:05 · 189 阅读 · 0 评论 -
[leetcode]211. 添加与搜索单词 - 数据结构设计 ---前缀树解法
前缀树解法:struct TrieNode{ bool isEnd; TrieNode *next[26]; TrieNode() { isEnd = false; memset(next, NULL, sizeof(next)); }};class WordDictionary {private: Tri...原创 2020-02-13 17:49:41 · 116 阅读 · 0 评论 -
[leetcode]208. 实现 Trie (前缀树)
struct TrieNode{ bool isEnd; // 是否是一个单词的结束 TrieNode *next[26]; TrieNode() { isEnd = false; memset(next, NULL, sizeof(next)); }};class Trie {private: Trie...原创 2020-02-13 17:11:04 · 114 阅读 · 0 评论 -
[leetcode]1293. 网格中的最短路径
struct Node{ int x, y; int rest; //还可以消几个障碍物 int dist; //距离 Node(int _x,int _y, int _rest, int _dist) :x(_x), y(_y), rest(_rest),dist(_dist){}};class Solution { stati...原创 2019-12-18 20:52:56 · 967 阅读 · 3 评论 -
leetcode--组合总数
1、剪枝+回溯:class Solution {private: vector<int> candidates; vector<vector<int>> res; vector<int>path; void DFS(int start, int target) { if(target ==...原创 2019-12-06 18:37:35 · 157 阅读 · 0 评论 -
快排的实现
一、快排介绍:快排的思想是分治法(二分法),排序时选个数x,把小于等于x的放x左边,大于等于x的放x右边,然后再对左边、右边递归排序void quickSort(int arr[],int low,int hight){ if(low < hight) { int mid = partition(arr,low,hight); //分区:分成[low,mid-1],mid,[...原创 2019-12-03 20:44:46 · 370 阅读 · 0 评论 -
有向图的传递闭包实现三种实现(Warshall+DFS+BFS)
一、传递闭包:定义:有n个顶点的有向图的传递闭包可以定义为一个n阶布尔矩阵T[n][n],如果i能到j则T[i][j] =1,否则T[i][j] =0意义:对于无向图,我们可以通过并查集来实现两个顶点是否有通路的快速查询。但有向图不能有并查集,所以现在可以用传递闭包了(当然无向图也可以用)通过Floyd-Warshall算法https://blog.csdn.net/qq_4069105...原创 2019-11-30 17:30:50 · 2056 阅读 · 0 评论 -
带权有向无环图的最短路径(使用拓扑排序的方法)
声明:我测试的样例答案都正确,如果代码有问题还请指出。代码:#include<iostream>#include<list>#include<vector>#include<queue>#include<set>#include<memory.h> #include<time.h>#define ...原创 2019-11-30 16:14:57 · 1777 阅读 · 0 评论 -
C++优先队列自定义排序总结
一、优先队的使用:二、基本数据类型:priority_queue<int> q;//默认是从大到小priority_queue<int, vector<int> ,less<int> >q;//从大到小排序priority_queue<int, vector<int>, greater<int> >q...原创 2019-11-02 17:31:51 · 14835 阅读 · 1 评论 -
寻找电路布线最短路径算法BFS
#include<iostream>#include<queue> using namespace std;const int M = 9;const int MAXLEN = 30;class Point{public: int x; int y;};int dx[4] = {0,1,0,-1}; //x、y方向上的增量 上右下左...原创 2019-10-09 14:04:55 · 1001 阅读 · 1 评论