- 博客(59)
- 资源 (6)
- 收藏
- 关注
原创 图的数组表示方法
/*图: 数组表示法创建*/#include <iostream>using namespace std;#define INFINITY 95533 // 最大值#define MAX_VERTEX_NUM 20 //最大顶点个数#define VRType int //顶点关系类型,对无权图,用1或0表示相邻否;对带权图,则为权值类...
2019-06-14 17:10:12 1983
原创 红黑树 RBT
/*红黑树(颜色平衡) 时间复杂度为 log2n 向下取整 红黑树的性质 1:每一个节点的颜色必须是红色或者是黑色的 2:根节点必须是黑色的 3:没有两个红色的孩子为父子关系 4:终端节点可以认为是黑色的(黑哨兵) 5:从树中的任意的节点出发到达所有可以到到达的终端节点的所有路径上的黑界点的数目必须是相同...
2019-06-13 12:22:21 259
原创 哈夫曼树
/* 哈夫曼树 最优二叉树 严格二叉树 正则二叉树*/#include <iostream>#include <stack>using namespace std;typedef struct node{ int value ; struct node *left,*right,*father;}HFM;void ...
2019-06-12 15:06:06 230
原创 平衡二叉树(AVl)
/* 平衡二叉树 AVL AVL树的原理是左右高度差不大于1*/#include <iostream>using namespace std;typedef struct node{ char value; struct node *left,*right,*father;}AVL;void Create(AVL* &...
2019-06-11 10:14:41 179
原创 排序二叉树(BST)
/* 排序二叉树 BST 时间复杂度为 LOG n 2*/#include <iostream>#include <stack>using namespace std;typedef struct node{ int value; struct node *left,*right;}...
2019-06-09 12:59:02 583
原创 二叉树的非递归遍历(前中后序)
/*二叉树的非递归遍历 先序 中序 后序*/#include <iostream>#include <stack>using namespace std;typedef struct node{ int value; struct node* left,*right;}Tree;/*使用递归(先序)创建二叉树*/void C...
2019-06-09 11:53:47 245
原创 按层创建二叉树(含二叉树的深度遍历和广度遍历)
/* 层次创建二叉树*/#include <iostream>#include <queue>using namespace std;typedef struct node{ char value; struct node *left; struct node *right;}CTree;/*层次创建二叉树*/void ...
2019-06-08 16:18:11 466
原创 二叉树的深度/广度遍历
/*二叉树的相关实现 ------顺序表存储二叉树的性质 1:二叉树k层含有的节点数为 2^k-1 (k从一开始计数) 2:为k层的二叉树最多含有的节点数是 2^(k-1) (k从一开始计数) 3:对于任意的二叉树而言 都有n0 = n2+1 (n0表示出度为为0的节点,n2表示出度为2的节点) 证明: 求二叉树的总的节点数 ...
2019-06-07 22:05:14 131
原创 二叉树(性质/顺序存储与先、中、后序遍历)
/*二叉树的相关实现 ------顺序表存储二叉树的性质 1:二叉树k层含有的节点数为 2^k-1 (k从一开始计数) 2:为k层的二叉树最多含有的节点数是 2^(k-1) (k从一开始计数) 3:对于任意的二叉树而言 都有n0 = n2+1 (n0表示出度为为0的节点,n2表示出度为2的节点) 证明: 求二叉树的总的节点数 ...
2019-06-07 21:46:32 570
原创 矩阵加法(十字交叉链表)
/*十字交叉链表 解决的问题: 1:矩阵加法 2:矩阵存储*/#include <iostream>using namespace std;typedef struct node_1{ /*创建节点结构*/ int x,y; int value; struct node_1 *right ,*down;}...
2019-06-07 11:06:41 849
原创 矩阵乘法
/*矩阵乘法逻辑关系较强,需要细细体会*/#include <iostream>using namespace std;#define MAX 100#define HMAX 100typedef struct node{ int x,y; int value;}SRC;typedef struct node_1{ SRC arr[...
2019-06-03 21:13:19 238
原创 矩阵快速转置
/*矩阵的快速转置*/#include<iostream>using namespace std;#define MAX 100typedef struct mode{ int x,y; int value;}SRC;typedef struct node_1{ SRC data[MAX+1]; int mu,nu,tu; /*分...
2019-06-02 17:36:35 1582
原创 矩阵(压缩存储)
/*矩阵(压缩存储) 使用场景: 矩阵的阶数加高 但是存在大量相同的元素或者是零元素 解决方法: 对相同的数据只分配一份空间 对于零元素不分配空间*//*对称矩阵*//*对称矩阵实例{ {1,2,3,4} {2,2,2,1} {3,2,3,1} {4,1,1,4}}*/#include <io...
2019-06-02 14:55:59 1647
原创 汉诺塔(非递归求解)
/* 汉诺塔非递归求解*/#include<iostream>#include<stack>using namespace std;typedef struct node{ int num; char a; char b; char c;}HNT;void funca(int num,char a,char b,c...
2019-06-02 13:58:55 300
原创 汉诺塔(递归实现)
/* 汉诺塔 递归实现*/#include <iostream>using namespace std;void funca(int a,char c_a,char c_b,char c_c){ if(a==1){ /*将a柱上剩下的一个盘子直接移动到目标柱c*/ cout<<c_a <<" "<...
2019-06-02 10:18:14 186
原创 使用栈实现表达式求值
/* 使用栈实现表达式求值*/#include <iostream>#include <string>#include <cmath>using namespace std;#define MAX_SIZE 7#define MAX 1000char rule[][7]={ {'>', '&g...
2019-06-01 17:32:28 1666
原创 走迷宫(递归)
/*走迷宫 使用递归实现走迷宫*/#include <iostream>using namespace std;#define LEN 5int start_pos_x = 0, start_pos_y = 0;int Map_x = 4, Map_y = 4;int Map[][5] ={ {0,0,0,0,0},...
2019-05-29 20:31:07 807
原创 括号匹配
/* 括号匹配*/#include <iostream>#include <stack>using namespace std;void funca(char arr[],int length,bool &Result){ stack<char> stack_; if(arr == NULL || length &...
2019-05-27 18:30:30 104
原创 使用栈实现十进制数转化为N进制数
/* 使用栈求解及十进制数转化为N进制数*/#include <iostream>#include <stack>using namespace std;void funca(int n,int m,stack<int> &stack_){ while(n){ stack_.push(n%m); ...
2019-05-26 23:25:41 3294
原创 队列
/*Queue 1:队列初始化 void init 2:元素装入队列 void push 3:首元素出队列 void pop 4:取队列首元素 front 5:取队列尾元素 back 6:获取队列的长度 int size 7:队列清空 void Destroy 8:队列判空 bool IsEmpty*/#include...
2019-05-26 22:36:59 188
原创 栈
/*stak; 1:创建栈顶标记指针 void init 2:元素入栈 void push 3:元素出栈 void pop 4:获取栈顶元素 top(返回值的类型为装入的数据的类型) 5:测定栈的元素数目 int size 6:栈判空 bool IsEmpty 7:栈清空 void DesTroy*/#include...
2019-05-26 20:41:47 86
原创 模板类
/* 模板类 比较两个数的大小*/#include <iostream>using namespace std;template <typename T>class Cube{private: T a; T b;public: Cube(T a_1 = 0,T b_1 = 0){ a= a_1; ...
2019-05-26 11:36:30 82
原创 函数模板
/*函数模板 实现代码的复用*/#include<iostream>using namespace std;template <typename T>T m_max(T a,T b){ return a>b?a:b;}int m_max(int a,int b){ return a>b?a:b;}temp...
2019-05-26 11:02:30 67
原创 “Y”型链表查找交点
/* 一个形如"Y"的链表 求其交点*/#include <iostream>#include <stack>using namespace std;typedef struct node{ int value ; struct node *next;}List;/*创建链表*/void Create(List* &He...
2019-05-26 00:35:27 602
原创 ‘6’型链表
/*'6'型链表 描述,有一个形式为'6'型的链表 求解交点的数值*/#include<iostream>using namespace std;typedef struct node{ int value; struct node *next;}List;/*创建单向链表*/void Create(List* &Head,List* &...
2019-05-25 23:57:55 253
原创 双向循环链表
/*双向循环链表 1:双向循环链表创建 2:双向循环链表长度 3:双向循环链表正向遍历 4:双向循环链表反向遍历 5:双向循环链表节点插入 6:双向循环链表节点删除 7:双向循环链表倒序 8:双向循环链表判空 9:双向循环链表排序 10:双向循环链表销毁*/#include <iostream>u...
2019-05-25 21:24:01 959
原创 双向链表
/* 1:创建双向链表 2:遍历双向链表 3:双向链表长度获取 4:双向链表节点的插入 5:双向链表节点的删除 6:双向链表倒序 7:双向链表排序 8:双向链表销毁 9:双向链表判空*/#include<iostream>using namespace std;typedef struct node{...
2019-05-25 18:59:00 465
原创 单向循环链表
/* 1:创建单向循环链表 2:遍历单向循环链表 3:单向循环链表节点插入 4:单向循环链表节点删除 5:单向循环链表倒序 6:单向循环链表排序 7:单向循环链表销毁 8:获取单链表的长度 9:单向循环链表判空*/#include <iostream>using namespace std;typedef ...
2019-05-25 16:11:08 261
原创 单向链表
/* 链表: 1:链表的创建 2:链表的遍历 3:链表的元素个数的计算 4:链表的判空 5:链表的插入 6:链表的节点的删除 7:链表的清空 8:链表的倒序 9:链表的排序*/#include <iostream>using n...
2019-05-25 16:08:46 301
原创 shell排序(ShellSort)
/*希尔排序shell*/#include <iostream>using namespace std;void funca(int *a,int length){ if(a== NULL || length<=0) return ; int temp; int value; for(int gap=length/2;gap>0;...
2019-03-24 15:42:16 162
原创 快速排序(QuickSort)
/*快速排序*/#include <iostream>using namespace std;int m_insert(int *a,int left,int right){ if(a== NULL) return -1; int temp=a[left]; while(left<right){ while(right>le...
2019-03-24 13:33:05 105
原创 计数排序(CountSort)
/*计数排序(要求数据相对较为集中,否则会浪费大量的额外的空间)*/#include <iostream>using namespace std;void funca(int *a,int length){ if(a==NULL || length<=0) return ; int Max=0,Min=0; for(int i=1;i<l...
2019-03-23 21:04:43 583
原创 插入排序(InsertSort)
/*插入排序*/#include <iostream>using namespace std;void funca(int *a,int length){ if(a== NULL || length<=0) return ; int temp,j; for(int i=1;i<length;i++){ temp=a[i];...
2019-03-23 20:15:12 282
原创 选择排序(SelectSort)
/*选择排序*/#include <iostream>using namespace std;void funca(int *a,int length){ if(a==NULL || length <=0) return ; int Min; for(int i=0;i<length;i++){ Min=i; ...
2019-03-23 19:13:01 173
原创 冒泡排序(BubbleSort)
/*冒泡排序(优化版)*/#include <iostream>using namespace std;void funca(int *a,int length){ if(a == NULL || length <= 0) return ; int i,j; int nflag; int temp; for(i=0; i<...
2019-03-23 18:30:30 264
原创 双向链表(不含头节点)
#include <iostream>using namespace std;typedef struct node{ int value; struct node *pNext; struct node *pFront;}List;//创建双向链表List* CreateList(int num){ int date; List ...
2019-03-17 21:07:28 285
原创 进程
进程:进程是一个调度单位,CPU为这个单位分配资源让其 正常的执行程序:持久性的保存在本地的一个可以执行的文件进程与程序之间的关系:当程序执行,产生调度单位【进程】以后,该调度单位与程序文件没有任何的关系【相互独立】进程空间【虚拟内存】:其中的0-3G提供给用户空间【KERNEL】使用,3-4G提供给内核空间【USER】使用 ...
2018-08-24 16:47:37 92
原创 项目管理工具(常用的知识点)--------------------【MakeFile】
MakeFile项目管理工具【编写MakeFile脚本管理用户项目】 1:MakeFile项目管理工具的作用: A:编译管理用户代码 B:节省编译的时间【识别最近改动的代码,对其进行更新编译,与旧文件连接生成新的APP】 2:MakeFile的三要素 目标:依赖 ...
2018-08-24 15:51:27 295
原创 排序二叉树【BST】的创建.先序遍历.中序遍历.节点的加入和删除
解决思路:1:将给定的数据进行数据元素的冒泡排序操作,用来判定将要执行BST 操作的数组中的数据是否满足BST树的基本的数据的要求,满足时再指向BST输的创建过程,不满足的时候,报错【“不满足BST对数据不一致的要求\n”】 ; 2:创建BST,此处采用的创建方式是采用的二级指针的创建方式【传入二级指针,用于建立BST树的树根,同时利于后序的删除操作】,在创建的时候,根据BST树的创建规则...
2018-08-12 18:51:25 1014
原创 字典树查找-----------------------【TrieTree】
结局思想1 定义结构体数组--------------结构体数组中的内容包含计数器count【作用是用来标记单词的结尾,在查找的时候用于判断 是不是存在所要查找的字符串】;指针数组str_26[26]【此处我所开【此处为了说明原理,我所使用的数组的大小是26,这就意味着只能是全部的大写或者全部的小写,并且不能含有其他的特殊的字符,用户可以根据实际需要开辟数组的大小】;单词的解释str_inf...
2018-08-02 19:54:11 254
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人