
数据结构
Happig丶
我的孤独,虽败犹荣
展开
-
对顶堆
对顶堆所谓对顶堆,有点想双栈对顶那样,一个是小根堆,另一个是大根堆。假设g是大根堆,l是小根堆,那么观察下图不难发现,两堆中间的元素,左边都是小于它的,且g.top()是小于它的最大值,右边都是大于它的,且l.top()是大于它的最小值中位数问题现在有一个序列动态输入,求每次输入后的中位数利用上述对顶堆的思想,中位数肯定是中间的数,那么g和l维护的两个数就是动态输入时最中间的两个数,因此...原创 2020-03-31 11:17:54 · 3595 阅读 · 1 评论 -
手写堆、栈、队列
前言作为忠实的STL党,我也不得不做出一些改变,毕竟STL经常TLE、MLE等等。学习一下实现原理并手动实现还是很有必要的,因为它跑的快 这是我们计算机专业最基础的数据结构栈数组形式优点:一次性可以存很多元素缺点:只能创建少数的栈const int maxn=1e5+10;struct Stack{ ll a[maxn]; int cur=0; void p...原创 2020-03-15 23:25:44 · 323 阅读 · 0 评论 -
双向链表
简介在学习了单向链表后,我们会发现链表只能从头结点开始一直往下直到链尾,而无法访问前面的节点,由此我们引入双向链表,顾名思义,双向链表就是多了一个前驱指针指向该节点的前一个节点指针实现结构和单向链表类似的,多了个指向前一个节点的指针struct node{ int data; struct node* prev; struct node* next;};初...原创 2020-01-22 13:40:51 · 128 阅读 · 0 评论 -
二叉树
双链式结构构造//构造一:需要使用malloc()函数创建内存空间typedef struct BinaryTree{ int data; struct BinaryTree *lchild,*rchild;}BiNode,*BiTree;//构造二:需要使用new关键字创建内存空间typedef struct BinaryTree{ int data; ...原创 2020-01-20 10:53:11 · 1079 阅读 · 0 评论 -
单向链表及其两种实现
简介链表是一个功能极为强大的数组,他可以在节点中定义多种数据类型,还可以根据需要随意增添,删除,插入节点。链表都有一个头指针,一般以head来表示,存放的是一个地址。链表中的节点分为两类,头结点和一般节点,头结点是没有数据域的。链表中每个节点都分为两部分,一个数据域,一个是指针域。一、指针实现创建链表使用malloc()函数分配内存空间,之后的指针操作可以直接改变链表的连接结构链表的索引...原创 2019-11-28 12:23:21 · 676 阅读 · 1 评论