数据结构
BJRSR
这个作者很懒,什么都没留下…
展开
-
堆排序123
【代码】堆排序123。原创 2024-06-09 22:23:34 · 104 阅读 · 0 评论 -
二叉树的前序便利,中序遍历,后序遍历
【代码】二叉树的前序便利,中序遍历,后序遍历。原创 2024-06-08 22:57:56 · 281 阅读 · 0 评论 -
求一个数组的逆序数的总数
#include<iostream>#include<vector>using namespace std;int cnt = 0;void merge(int a[], int l, int mid, int r){ int num = r - l + 1,i,j,k=0; int *b = new int[num]; i = l; j = mid ...原创 2019-12-16 20:14:08 · 219 阅读 · 0 评论 -
前序线索化,中序线索化,后续线索化
二叉树的前序线索化,寻找prior,next函数#include<iostream>using namespace std;struct Threadnode{ struct Threadnode *lchild, *rchild; bool ltag, rtag;};Threadnode *pre;void Thread(Threadnode *&ro...原创 2019-12-08 17:24:55 · 786 阅读 · 1 评论 -
二叉平衡树查找成功,不成功平均查找长度
https://www.cnblogs.com/kangpp/p/4381358.html转载 2019-10-30 16:56:06 · 4937 阅读 · 0 评论 -
二部图的详解
二部图的详解转载 2019-10-19 23:16:27 · 1100 阅读 · 0 评论 -
树与二叉树的相互转化,森林与树的相互转化
原创 2019-08-28 21:07:48 · 165 阅读 · 0 评论 -
利用v向量实现集合
n>>m ,n(位移的数),m(向右位移的个数)n<<m,同理。|(或位运算符)只要有1就会生成1,两都是0生成0.&(与位运算符)两端有1才会生成1,否则0;~(取反)1->0,0->1;^(异或) 1-1->0,0-0->0,1-0->1,0-1->1;两端互异生成1.否则0;#include<...原创 2019-08-30 23:17:39 · 304 阅读 · 0 评论 -
用链表表示集合
#include<iostream>using namespace std;typedef struct node{ int data; struct node *next;}node;typedef struct chainset{ node *head;}chainset;chainset *SetInit(){ chainset *temp = new...原创 2019-08-31 09:11:07 · 382 阅读 · 0 评论 -
求100以内的素数
用数组集合:#include<iostream>using namespace std;void print(int arr[], int n){ for (int i = 0; i < n; i++) cout << arr[i] << " "; cout << endl;}void arraydel(int a...原创 2019-08-31 21:39:47 · 232 阅读 · 0 评论 -
并查集相关问题
#include<iostream>//算法题//1、已知有N个人构成的一个集合,其中某些人与某些人直接是朋友关系。//假定朋友关系具有传递性(朋友的朋友也是朋友),对称性(相互是朋友)、自反性(我是我自己的朋友)。//给定M组朋友关系,想要知道N个人中的任意两个人是不是朋友关系。using namespace std;typedef struct UFS{ int ...原创 2019-09-03 11:00:04 · 137 阅读 · 0 评论 -
邻接表的拓扑排序(栈)
#include<iostream>#define inf 35503#include<stack>using namespace std;typedef struct lnode{ int v; struct lnode *next; }lnode;typedef struct array{ int in; lnode *next;}arra...原创 2019-09-12 11:12:35 · 431 阅读 · 0 评论 -
二叉搜索树(树的创建及搜索)
#include<iostream>using namespace std;typedef struct Binnode{ int data; struct Binnode *lchild, *rchild;}Binnode;Binnode * createBinTree(int arr[], int n){ Binnode *root = NULL,*temp,*...原创 2019-09-13 11:45:29 · 277 阅读 · 0 评论 -
字典的运用--条形图统计的问题(二叉搜索树)
#include<iostream>using namespace std;typedef struct Binnode{ int value; int key; struct Binnode *lchild, *rchild;}Binnode;bool search(Binnode *root, int x){ if (!root) return...原创 2019-09-14 09:58:24 · 187 阅读 · 0 评论 -
哈夫曼树
利用已知字符串和字符对应的频率创建一颗哈夫曼树#include<iostream>using namespace std;typedef struct Huffman{ int weight; char name; struct Huffman*lchild, *rchild; int *num;}Huffman,*Hufflink;typedef struc...原创 2019-09-19 17:11:11 · 224 阅读 · 0 评论 -
图-prim算法,kruscal算法
最小支撑树:prim算法。以点找最短边。 时间复杂度为O(n^2)#include<iostream>#define inf 35535using namespace std;typedef struct graph{ int vn, en; int **arr;}Graph;bool isfull(bool *s, int n){ for (int i = ...原创 2019-08-28 19:52:51 · 940 阅读 · 0 评论 -
利用堆排序从大数据中挑选最小k个数据元素
初始化大顶堆,小顶堆的时间复杂度为O(logn),挑选最小k个元素用大顶堆;挑选最大k个元素用小顶堆。选出最小(大)k个元素的时间复杂度为O(nlogn),之后要进行堆排序之后总的时间复杂度为O(nlogk)+O(klogk)=O((n+k)logk),(n>>k)时间复杂度为O(nlogk);例题1:1000个数里面挑选最小100个数的算法。#include<ios...原创 2019-08-17 17:04:49 · 1013 阅读 · 0 评论 -
栈,中缀表达式转后缀,前缀
中缀转化后缀中缀表达式转化前缀表达式快速读出后缀表达式的结果:记忆口诀:中缀表达式转后缀表达式--》从左往右,依次输出操作数,遇到操作符入栈,按照优先级原则出入栈。后缀表达式得出结果--》从左往右把操作数入栈,遇到操作符把临近栈顶的两个操作数弹出与操作符结合得出中间结果,入栈。依次...原创 2019-08-09 09:22:43 · 261 阅读 · 0 评论 -
标号树的构造方法以及中缀表达式转前,后缀
原创 2019-08-19 10:50:28 · 474 阅读 · 0 评论 -
二叉树的非递归树高
#include<iostream>#include<queue>using namespace std;typedef struct binNode{ char data; struct binNode * lchild, *rchild;}BinNode,*BinTree;BinTree createTree(){ queue<BinTree...原创 2019-08-19 16:41:50 · 118 阅读 · 0 评论 -
快速排序和随机快排
#include<iostream>using namespace std;void swap(int &i, int &j){ int temp = i; i = j; j = temp;}int partion(int arr[], int l, int r){ int i, j,key,ran; i = l; ran = l + ran...原创 2019-08-15 10:19:20 · 132 阅读 · 0 评论 -
依据快速排序的查找第k个元素
#include<iostream>using namespace std;void swap(int &i, int &j){ int temp = i; i = j; j = temp;}int partion(int arr[], int l, int r){ int i, j,key,ran; i = l; ran = l + r...原创 2019-08-15 10:38:12 · 454 阅读 · 0 评论 -
树的递归,非递归遍历(有可能考)
#include<iostream>#include<stack>#include<queue>using namespace std;typedef struct binNode{ char data; struct binNode * lchild, *rchild;}BinNode, *BinTree;BinTree CreatTr...原创 2019-08-23 23:58:21 · 206 阅读 · 0 评论 -
(快速排序的改进)三划分正负数)
思想:先进行把负整数(无规律)划分到0的左边,正整数(无规律)划分到0的右边。只要一趟时间复杂度为O(n);然后进行负整数的子数列,正整数的子数列进行快排序。#include<iostream>using namespace std;void swap(int &i, int &j){ int temp = i; i = j; j = temp;}...原创 2019-08-24 07:36:42 · 353 阅读 · 0 评论 -
福州大学 王晓东 数据结构 排序
//冒泡排序 时间复杂度为O(n^2)void bubble(int arr[],int n){ for(int i=n;i>1;i--) //n-1次排序 for(int j=0;j<i-1;j++) if(arr[j]>arr[j+1]) swap(arr[i],arr[j]);//交换数值...原创 2019-08-11 12:03:56 · 1066 阅读 · 0 评论 -
图的广度优先遍历,深度优先遍历
#include<iostream>#include<queue>using namespace std;typedef struct Graph{ int vn;//图的顶点个数 int en;//图的边的条数 int **arr;//用邻接矩阵表示图}Graph;void bfssearch(Graph g){ bool *pre = n...原创 2019-08-25 17:11:03 · 121 阅读 · 0 评论 -
中序线索化
#include<iostream>#include<queue>using namespace std;typedef struct ThreadNode{ char data; struct ThreadNode *lchild, *rchild; bool ltag, rtag;}ThreadNode, *ThreadTree;enum tag {...原创 2019-08-21 09:44:56 · 220 阅读 · 0 评论 -
树的问题
(1)k^i(i>=0&&i<=L)(2)(n-2)/k+1(3) (n-1)*k+i+1(4) (n-1)%k!=0 其右兄弟是 n+1分析:任意一个编号为i的父节点的孩子节点为:(i-1)*k+2到i*k+1;就可以算出这四道题...原创 2019-08-21 10:55:53 · 144 阅读 · 0 评论 -
迪杰斯特拉(单源到个顶点的最短路径),floyd算法
#include<iostream>#include<queue>#define NoEdge 35535using namespace std;typedef struct Graph{ int vn;//图的顶点个数 int en;//图的边的条数 int **arr;//用邻接矩阵表示图}Graph;bool Isfull(bool rec...原创 2019-08-25 17:08:54 · 189 阅读 · 0 评论 -
希尔排序,堆排序(大顶堆,小顶堆)
#include<iostream>using namespace std;void shellsort(int arr[], int n){ for (int gap = n / 2; gap > 0; gap /= 2) { for (int i = gap; i < n; i++) { int temp = arr[i]; int j;...原创 2019-08-17 10:14:17 · 156 阅读 · 0 评论 -
数据结构 哈希表 ASL 失败查找
原创 2019-07-17 11:12:07 · 1790 阅读 · 1 评论