- 博客(13)
- 收藏
- 关注
原创 二叉树创建
先序和中序创建二叉树void creat(Tree &T,int f1,int f2,int n){//f1、f2分别为各个子树先序和中序序列中第一个元素的指针,n为当前二叉树中的元素个数 int k; if(n<=0){//当树中元素为0时,结点指针赋NULL,递归返回 T=NULL; return; } for(int i=f1;i<f1+n;i++){//中序序列中寻根 if(in[i]==pre[f2]){//找到则创建结点 k=i-f1;
2021-03-22 12:18:31
512
原创 最短路径——Dijkstra算法简单实现
最短路径——Dijkstra算法简单实现#include <bits/stdc++.h>#define maxn 100001using namespace std;int e[101][101]; bool book[101];int dis[101];int n,m,inf=65535;void init(){ for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) if(i==j) e[i][j]=0;
2021-03-20 17:53:34
245
原创 二叉排序树的基本操作
二叉排序树的基本操作1.插入概述:总体采用递归的思路,先从根节点递归遍历,比较要插入的值和当前结点的值,当值相等时不执行插入操作,小于当前结点的值则访问该结点的左子树,大于则访问右子树,直至访问到某系当前结点左孩子或右孩子为空时,用要插入的值创建新的结点并连接到该树中。具体实现:bool BSTinsert(BiTree &T,int k){//二叉排序树的插入,插入成功返回true,否则返回false if(T==NULL){//当树为空时创建新的结点插入树中 T=new Bi
2021-02-28 22:36:46
332
原创 DFS简单实现
DFS简单实现#include <bits/stdc++.h>#define INIT ios::sync_with_stdio(false)using namespace std;int book[100],flag,n;vector<int> mmap[100];//vector数组实现邻接表 bool DFS(int v){ if(v==flag)//v为终点 return true; if(book[v]==1)//v为标记过的点 return f
2021-02-19 16:04:12
304
原创 动态规划经典题
最长上升子序列//最长上升子序列 #include <bits/stdc++.h>#define INIT ios::sync_with_stdio(false)using namespace std;int a[1000],maxlen[1000]; int main() { INIT; int n; cin>>n; for(int i=1;i<=n;i++){ cin>>a[i]; maxlen[i]=1; } for(int i
2021-02-17 19:49:48
95
原创 并查集
并查集#include <bits/stdc++.h>#define INIT ios::sync_with_stdio(false)using namespace std;int f[1001]={0},n,m,sum=0;void init(){ for(int i=1;i<=n;i++) f[i]=i; return;}int getf(int v){ if(f[v]==v) return v; else{ f[v]=getf(f[v]); re
2021-02-17 17:26:07
96
原创 堆排序
堆排序#include <bits/stdc++.h>using namespace std;int a[101];int n;void siftdown(int i){ int t,flag=0; while(i*2<=n&&flag==0){ if(a[i]<a[i*2]) t=i*2; else t=i; if(i*2+1<=n){ if(a[t]<a[i*2+1]) t=2*i+1; }
2021-02-17 16:04:47
90
原创 C/C++递归建立二叉树及遍历
C/C++递归建立二叉树及遍历#include <bits/stdc++.h>using namespace std;typedef struct BiTNode{ int data; struct BiTNode *lchild,*rchild;}BiTNode,*BiTree;bool CreateBiTree(BiTree &T){ int n; cin>>n; if(n==0) T=NULL; else { if(!(T=new B
2021-02-05 20:48:31
392
原创 表达式求值
表达式求值#include <bits/stdc++.h>using namespace std;int factor_value();int term_value();int expression_value();int main() { cout<<expression_value()<<endl; return 0;}int factor_value()//计算因子的值 { int result =0; char c=cin.peek()
2021-02-01 16:45:50
139
原创 线性表—链式存储基本操作
链式存储定义及基本操作定义形式typedef struct LNode{ ElemType data; struct LNode *next;}LNode,*LinkList;初始化Status InitList(LinkList L){ L=(LinkList)malloc(sizeof(LNode)); if(!L) return ERROR; L->next=NULL; return OK;}销毁单链表Status DestroyList(LinkList
2020-06-28 16:13:52
880
原创 线性表—顺序存储基本操作
顺序存储定义及基本操作定义形式typedef struct{ ElemType *elem; //存储空间的基地址 int length; //表的当前长度}SqList;初始化Status InitList(SqList *L){ L->elem=(ElemType *)malloc(MAX*sizeof(ElemType)); if(!L->elem) return ERROR; L->length=0; return OK;}获取元素
2020-06-28 15:44:01
5423
原创 排序算法汇总
排序算法汇总选择排序①可视化过程②算法思想③代码实现④算法复杂度分析冒泡排序①可视化过程②算法思想③代码实现④算法复杂度分析插入排序①可视化过程②算法思想③代码实现void InsertSort(int *ary,int n){ int i,j; for(i=2;i<=n;i++) { if(ary[i]<ary[i-1]) { ary[0]=ary[i]; for(j=i-1;ary[j]>ary[0];j--) a
2020-06-27 15:56:06
125
原创 二叉树的非递归遍历算法
二叉树的非递归遍历1.前序遍历遍历顺序:根节点→左孩子→右孩子;具体算法思想:将二叉树的根结点赋值给遍历的指针,若当前节点存在,则输出当前节点的相关数据并做入栈操作(将该节点的地址存入栈中),继而访问其左孩子;执行如上操作,直到当前节点为空,做出栈操作并访问其右孩子,再重复如上操作,直至当前节点不存在且栈为空;具体遍历过程如图:算法代码实现如下:void preorder( BinTree t){ Stack S; InitStack(S); BinTree temp = t;//定义
2020-06-01 15:30:46
7474
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅