
数据结构
sumup
活到老,学到老。
展开
-
单链表的逆转
/*只需要完成逆置链表函数struct ListNode {int val;struct ListNode *next;ListNode(int x) :val(x), next(NULL) {}};*/class Solution {public: ListNode* ReverseList(ListNode* pHead) {原创 2017-09-02 11:32:04 · 316 阅读 · 0 评论 -
二叉树性质
二叉树有以下几个性质:TODO(上标和下标)性质1:二叉树第i层上的结点数目最多为 2{i-1} (i≥1)。性质2:深度为k的二叉树至多有2{k}-1个结点(k≥1)。性质3:包含n个结点的二叉树的高度至少为log2 (n+1)。性质4:在任意一棵二叉树中,若终端结点的个数为n0,度为2的结点数为n2,则n0=n2+1。 2.1 性质1:二叉树第i层上的结点数目最转载 2017-09-04 12:13:46 · 487 阅读 · 0 评论 -
排序总结
一、排序的分类插入排序1.直接插入排序#includeusing namespace std;void insertSort(int a[],int n){ int i,j; for(int i=2;i<=n;++i)//依次将a[2]~a[n]插入到前面已排序的序列 { if(a[i]<a[i-1])//a[i]小于前驱的话,将a[i]插入有序表原创 2017-09-11 16:59:23 · 348 阅读 · 0 评论 -
二叉树的遍历
递归与非递归#include #include using namespace std;typedef struct BiNode{ int num; struct BiNode *lchild,*rchild;}BiNode,*BiTree;int createTree(BiTree &T)//先序构造二叉树 { int data; cin>>data; if原创 2017-09-18 14:43:40 · 351 阅读 · 0 评论 -
查找总结
1、线性查找法2、二分查找3、分块查找4、散列表常用的哈希函数除留余数法常用的解决冲突的方法线性探测法、拉链法装填因子查找成功时平均查找长度查找失败时平均查找长度原创 2017-09-12 09:33:16 · 219 阅读 · 0 评论 -
树->二叉树
树变二叉树过程:1.给兄弟加线2.去掉长子外的线3.层次调整调整完结构唯一转自:https://www.nowcoder.com/profile/7547596/test/11230047/85934转载 2017-09-20 08:44:23 · 319 阅读 · 0 评论 -
图的基本应用
最小生成树Prim算法适用于求解边稠密的图的最小生成树。Kruskal算法适合于边系数而顶点较多的图。最短路径Dijkstra算法Floyd算法拓扑排序有向无环图:一个有向图中不存在环,则称为有向无环图,简称DAG图。AOV网:如果DAG图表示一个工程,其顶点表示活动,用有向边表示活动Vi必须先于活动Vj进行的这样一种关系,则将这种有向图称为顶点表示活动的网原创 2017-10-08 10:36:51 · 460 阅读 · 0 评论 -
设计一个栈实现最大值函数
/**设计一个栈结构,使得取出栈中最大值时间复杂度为O(1)就是开辟多一个存储最大值索引的栈,该栈和存储数据的栈保持同步,即栈顶指针同时作用这两个栈。*/#include using namespace std;class myStack { public: myStack() { MAX = 10;//栈的容量 top = -1;//oriSTack和ma原创 2017-10-08 17:36:42 · 1103 阅读 · 0 评论 -
Hash表(哈希表、散列表)
一、基本概念散列函数:一个把查找表中的关键字映射成该关键字对应的地址的函数,记为Hash(key)=Addr。(地址可以是数组下标,索引,或内存地址等)冲突:散列函数可能会把两个和两个以上的不同关键字映射到同一地址。(冲突不可避免,所以要设计好的处理冲突的方法。)同义词:发生碰撞的不同关键字为同义词。散列表:根据关键字直接进行访问的数据结构。散列表是建立在关键字和存储地址之间的一种原创 2017-10-06 10:14:19 · 646 阅读 · 0 评论