笔记
守一份坚持
码农
展开
-
二叉树,完全二叉树,满二叉树
二叉树:是n(n>=0)个结点的有限集合,它或者是空树(n=0),或者是由一个根结点及两颗互不相交的、分别称为左子树和右子树的二叉树所组成。满二叉树:一颗深度为k且有2^k-1个结点的二叉树称为满二叉树。说明: 除叶子结点外的所有结点均有两个子结点。所有叶子结点必须在同一层上。完全二叉树:若设二叉树的深度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第 h 层所有的结点都连续集中在最左边,这就是完全二叉树。说明: 完全二叉树中的结点若无左子树,则该结点原创 2021-02-02 16:44:58 · 652 阅读 · 0 评论 -
头指针,头结点,首元结点
头指针、头结点、首元结点(第一个元素结点)。在单链表中的作用是什么?首元结点是指链表中存储线性表中第一个数据元素a1的结点。头结点: 为了操作方便,通常在链表的首元结点之前附设一个结点,称为头结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理。头指针是指向链表中第一个结点(或为头结点或为首元结点)的指针。若链表中附设头结点,则不管线性表是否为空表,头指针均不为空。否则表示空表的链表的头指针为空。这三个概念对单链表、双向链表原创 2021-02-01 19:35:52 · 3741 阅读 · 0 评论 -
回文
什么是回文? 正读和反读都相同的字符序列为“回文”,例如,‘abba’和‘abcba’是回文,‘abcde’ 和‘ababab’则不是回文。怎样用线性表、堆栈和队列等方式正确输出判断其回文?线性表是随机存储,可以实现,靠循环变量(j–)从表尾开始打印输出;堆栈是后进先出,也可以实现,靠正序入栈、逆序出栈即可;队列是先进先出,不易实现。哪种方式最好,要具体情况具体分析。若正文在机内已是顺序存储,则直接用线性表从后往前读取即可,或将堆栈栈顶开到数组末尾,然后直接用POP动作实现。若正文是单链表形式存原创 2021-01-30 18:19:03 · 877 阅读 · 0 评论 -
顺序存储和链式存储优缺点
比较顺序存储结构和链式存储结构的优缺点。答:① 顺序存储时,相邻数据元素的存放地址也相邻(逻辑与物理统一);要求内存中可用存储单元的地址必须是连续的。优点:存储密度大(=1),存储空间利用率高。缺点:插入或删除元素时不方便。②链式存储时,相邻数据元素可随意存放,但所占存储空间分两部分,一部分存放结点值,另一部分存放表示结点间关系的指针优点:插入或删除元素时很方便,使用灵活。缺点:存储密度小(<1),存储空间利用率低。顺序表适宜于做查找这样的静态操作;链表宜于做插入、删除这样的动态操作。若线原创 2021-01-28 19:55:08 · 4160 阅读 · 0 评论 -
线性表、栈和队列的相同点和不同点
相同点:都是线性结构,都是逻辑结构的概念。都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,对插入、删除运算加以限制。不同点:①运算规则不同,线性表为随机存取,而栈是只允许在栈顶进行插入、删除运算,是后进先出表;队列是只允许在队尾进行插入、队头进行删除运算,是先进先出表;② 用途不同,堆栈用于子程调用和保护现场,队列用于多道作业处理、指令寄存及其他运算等等...原创 2021-01-27 16:21:35 · 13927 阅读 · 0 评论 -
队列
1 一般队列的“先进先出”原则队列属于受限的线性表,遵循先进先出的原则如果元素的输入顺序一定,那么他从队列的输出顺序也一定,这一点要同栈做好区分。如 a,b,c依次入队列,则出队列顺序也一样当然,上述情况只针对,从队尾入队,从队头出队的队列。2 循环队列为解决假溢出的情况,开始采用循环队列循环队列中一般采用三种方式计算队列中元素个数(1)牺牲一个单元格的方法,rear指向队尾元素的后一个位置。Q.front==(Q.rear+1)%maxsize时队满Q.frontQ.rear时为空。原创 2021-01-26 15:22:22 · 979 阅读 · 0 评论 -
2021-01-25栈
栈的“后进先出”和“先进后出”举个例子 a,b,c,依次进栈,出栈不限可能的情况有1 a进,a出,b进,b出,c进,c出2 a进,a出,b进,c进,c出,b出3 a进,b进,b出,a出,c进,c出4 a进,b进,b出,c进,c出,a出5 a进,b进,c进,c出,b出,a出例如第一种,有人认为c相较a是后进的,也是后出的,这种理解是不对的,栈的后进先出和先进后出是在未出栈的情况下体现的。...原创 2021-01-25 19:29:30 · 98 阅读 · 0 评论