队列相关基础内容参我的博文:队列顺序存储 - 设计与实现 - API函数 队列也是一种特殊的线性表:可以用线性表链式存储来模拟队列的链式存储. 主要代码: // linkqueue.h // 队列链式存储API声明 #ifndef _LINKQUEUE_H_ #define _LINKQUEUE_H_ typedef void LinkQueue; // 创建队列 LinkQueue* LinkQueue_Create(); // 销毁队列 void LinkQueue_Destroy(Link…
基本概念 链式存储定义 为了表示每个数据元素与其直接后继元素之间的逻辑关系,每个元素除了存储本身的信息外,还需要存储指示其直接后继的信息. 表头结点 链表中的第一个结点,包含指向第一个数据元素的指针以及链表自身的一些信息 数据结点 链表中代表数据元素的结点,包含指向下一个数据元素的指针和数据元素的信息 尾结点 链表中的最后一个数据结点,其下一元素指针为空,表示无后继. 链表技术领域推演 链表链式存储_api实现分析 在C语言中可以用结构体来定义链表中的指针域 链表中的表头结点也可以用结构体实现…
基本概念 其它概念详情參看前一篇博文:栈的顺序存储 - 设计与实现 - API实现 这里也是运用了链表的链式存储API高速实现了栈的API. 代码: // linkstack.h // 链式存储栈的API声明 #ifndef _MY_LINKSTACK_H_ #define _MY_LINKSTACK_H_ typedef void LinkStack; // 创建栈 LinkStack* LinkStack_Create(); // 销毁栈 void LinkStack_Destroy(Lin…
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出.简称链队列. 实现代码如下: /* LinkQueue.h 头文件 */ #include<iostream> #define OK 1 #define ERROR 0 typedef int QElemType; typedef int Status; class QNode{ public: QNode():data(0),next(NULL) {} QElemType data; QNode *next; }; class…
1 队列的定义 队列是只允许在一端(队尾)进行插入操作,而在另一端(队头)进行删除操作的线性表. 2 队列的特点 1)先进先出是队列最大的特点,是应用中非常常见的模型,例如排队: 2)队列也属于线性表,线性表的特性队列都拥有. 3 循环队列的实现及关键点 3.1 关键点 1)队列为空的条件:队头指针等于队尾指针,即head == tial: 2)队列中保留一个元素空间,当队列满时,尾指针和头指针之间还剩一个元素空间.队列为满的条件:(tial + 1) % quenceSize == head:…
一. 队列 1.队列定义:只允许在表的一端进行插入,表的另一端进行删除操作的线性表. 2.循环队列:把存储队列的顺序队列在逻辑上视为一个环. 循环队列状态: 初始时:Q.front=Q.rear=0 front指针移动:Q.front=(Q.front+1)%MaxSize rear指针移动:Q.rear=(Q.rear+1)%MaxSize 队列长度:(Q.rear+MaxSize-Q.front)%MaxSize 队空条件:Q.front=Q.rear 队满条件:Q.front=Q.rear…
优先队列(priority queue) 普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除.在优先队列中,元素被赋予优先级.当访问元素时,具有最高优先级的元素最先删除.优先队列具有最高进先出 (largest-in,first-out)的行为特征. 例如下图:任务的优先权及执行顺序的关系                  优先队列是0个或多个元素的集合,每个元素都有一个优先权或值 时间复杂度         Push时进行排序                 有序链表(即顺序…
二叉查找树的定义: 二叉查找树或者是一颗空树,或者是一颗具有以下特性的非空二叉树: 1. 若左子树非空,则左子树上所有节点关键字值均小于根节点的关键字: 2. 若右子树非空,则右子树上所有节点关键字值均大于根节点的关键字: 3. 左.右子树本身也分别是一颗二叉查找树. 二叉查找树的实现,功能有: 1. 用一个数组去构建二叉查找树 2. 二叉查找树的中序遍历和层次遍历 3. 插入节点 4. 查找节点 5. 查找二叉树中的最大值和最小值 6.  得到节点的直接父节点 7. 得到节点的直接前驱和直接后…
二叉树的定义: 二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的.分别称作这个根的左子树和右子树的二叉树组成. 二叉树的遍历方式主要有:先序遍历(NLR),中序遍历(LNR),后序遍历(LRN),和层次遍历. 注意: 由二叉树的先序序列和中序序列可以唯一地确定一颗二叉树: 由二叉树的后序序列和中序序列可以唯一地确定一颗二叉树: 由二叉树的层序序列和中序序列可以唯一地确定一棵二叉树: 但,由二叉树的先序序列和后序序列无法唯一地确定…
对比上一篇文章"顺序存储二叉树",链式存储二叉树的优点是节省空间. 二叉树的性质: 1.在二叉树的第i层上至多有2i-1个节点(i>=1). 2.深度为k的二叉树至多有2k-1个节点(k>=1). 3.对任何一棵二叉树T,如果其终结点数为n0,度为2的节点数为n2,则n0=n2+1. 4.具有n个节点的完全二叉树的深度为log2n+1. 5.对于一棵有n个节点的完全二叉树的节点按层序编号,若完全二叉树中的某节点编号为i,则若有左孩子编号为2i,若有右孩子编号为2i+1,母亲…