数据结构
小菜鸡的蜕变之路
长路漫漫,若能坚持,未来可期,加油~
展开
-
设计循环队列
设计你的循环队列实现。 循环队列是一种线性数据结构,其操作表现基于 FIFO(先进先出)原则并且队尾被连接在队首之后以形成一个循环。它也被称为“环形缓冲器”。循环队列的一个好处是我们可以利用这个队列之前用过的空间。在一个普通队列里,一旦一个队列满了,我们就不能插入下一个元素,即使在队列前面仍有空间。但是使用循环队列,我们能使用这些空间去存储新的值。你的实现应该支持如下操作:MyCirc...原创 2019-07-14 16:23:43 · 365 阅读 · 0 评论 -
先序遍历、中序遍历,后序遍历的伪代码
结点定义:typedef struct Node{ int data; struct Node *left; struct Node *right;}BTreeNode;先序遍历:void PreOrder(BTreeNode* curr){ if(curr == NULL) return; cout << curr->data <&l...原创 2019-09-27 22:06:02 · 1692 阅读 · 0 评论 -
AVL树
以后在有面试官问你AVL树,你就把这篇文章扔给他。作者:帅地来源 |网络整理,版权归原作者所有,侵删。背景西天取经的路上,一样上演着编程的乐趣.....1、若它的左子树不为空,则左子树上所有的节点值都小于它的根节点值。2、若它的右子树不为空,则右子树上所有的节点值均大于它的根节点值。3、它的左右子树也分别可以充当为二叉查找树。例如...转载 2019-09-12 21:40:56 · 826 阅读 · 4 评论 -
中缀表达式转换为等价后缀表达式
假设栈初始为空,将中缀表达式转换为等价后缀表达式的过程中,当扫描到f时,栈中的元素依次是()A、+(*-B、+(-*C、/+(*-*D、/+-*基本概念:在中缀变后缀时,操作数的顺序不会发生变化,只有运算符的顺序可能发生变化。同时又没有括号。所以在转换的过程中,只要碰到操作数,可以直接输出,而遇到运算符和括号进行相应的处理即可。转换原则如下:...原创 2019-08-06 16:03:25 · 2830 阅读 · 1 评论 -
堆栈
堆栈定义:堆栈简称栈堆栈是一种只允许在表的一端进行插入操作和删除操作的线性表。允许操作的一端称为栈顶,栈顶元素的位置由一个称为栈顶指针的变量给出。当表中没有元素时,称之为空栈。由于堆栈只允许在一端操作,后进入的数据往往会先处理,简称为后进先出,如下图:堆栈的基本操作1、插入(进栈、入栈)2、删除(出栈、退栈)3、测试堆栈是否为空4、测试堆栈是否已满5、检索当前栈顶元素...转载 2019-08-01 21:52:09 · 463 阅读 · 0 评论 -
数据结构之数组刷题笔记
1、用一维数组存储二叉树时,总是以层次遍历顺序存储结点。2、设有一个n阶的下三角矩阵A,如果按照行的顺序将下三角矩阵中的元素(包括对角线 上元素)存放在n(n+1)个连续的存储单元中,则A[i][j]与 A[0][0]之间有多少个数据元素(即不算A[i][j]和A[0][0])。答案:j<=i ? i*(i+1)/2 +j-1: i*(i+1)/2+i分析:由题目可知,...原创 2019-08-05 21:52:13 · 1406 阅读 · 0 评论 -
数据结构之查找算法刷题笔记
1、既希望较快的查找又便于线性表动态变化的查找方法是分块查找(索引查找)。 (因为其块内无序,方便增删)原创 2019-08-05 21:51:54 · 222 阅读 · 0 评论 -
数据结构之线性表刷题笔记(顺序表,单链表,双链表,循环链表)
线性表知识点及错题笔记:(整理自牛客网)1、在线性表中,顺序存储元素逻辑相邻,物理也相邻;链式存储逻辑相邻,物理不一定相邻;2、若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用(顺序表)存储方式最节省时间。(若是在中间删、插元素,链表比较省时。)3、栈数据结构具有记忆功能,例如点A网页,A入栈,点B网页,B入栈,在B网页点后退,进入A,也就是B出栈,...原创 2019-07-31 22:46:02 · 1119 阅读 · 0 评论 -
单链表
1、单链表简介:为了克服顺序表的缺点,可以采用链接方式来存储线性表,通常将链接方式存储的线性表称为链表。链表适用于插入或删除频繁,存储空间需求不定的情形。单链表是一种最简单的链表表示,也叫做线性链表。用它来表示线性表时,用指针表示结点间的逻辑关系。单链表的结点包含两个部分:data部分称数据域,用于存储线性表的一个数据元素。link部分称为指针域或链域,用于存放一个指针,该指针...原创 2019-07-31 18:04:30 · 596 阅读 · 0 评论 -
顺序表
顺序表是线性表基于数组的存储表示。1、顺序表定义:把线性表中的所有表项按照其逻辑顺序依次存储到从计算机存储中指定存储位置开始的一块连续的存储空间中。线性表中第一个表项的存储位置就是被指定的存储位置,第i个表项(2 <= i <= n)的存储位置紧接在第i-1个表项的位置的后面。假设顺序表中每个表项的数据类型为T,则每个表项所占用存储空间的大小(即字节数)大小相同,均为size...原创 2019-07-31 12:01:54 · 911 阅读 · 0 评论 -
中缀表达式如何转化为后缀表达式?
题目:表达式“X=A+B*(C--D)/E”的后缀表示形式可以为A、XAB+CDE/-*=B、XA+BC-DE/*=C、XABCD-*E/+=D、XABCDE+*/=分析:一个中缀式到其他式子的转换方法~~这里我给出一个中缀表达式~a+b*c-(d+e)第一步:按照运算符的优先级对所有的运算单位加括号~式子变成拉:((a+(b*c))-(d+e...原创 2019-08-02 21:43:10 · 900 阅读 · 0 评论 -
红黑树和AVL树的效率对比
为什么map,set 不用AVL树作为底层实现?用过 STL map 么, 你用过 linux 么(这个说大了), 他们都有红黑树的应用. 当你对搜索的效率要求较高,并且数据经常改动的情景,你可以用红黑树, 也就是 map。至于, 为什么不用 AVL 树作为底层实现, 那是因为 AVL 树是高度平衡的树, 而每一次对树的修改, 都要 rebalance, 这里的开销会比红黑树大. 红黑树插...转载 2019-09-29 21:31:00 · 1667 阅读 · 1 评论