下面的循环遍历条件是首尾指针不等(rear!=front) 标记一下此时的父结点p就是队列的首结点p=queue[rear],首节点出队front+1,如果当前父节点的左子树不是null,那么左结点入队,rear+1 如果当前父节点的右子树不是null,那么 右节点入队,rear+1.。这样一层遍历就完成了此时队列里面是2和3,p为2结点。接着第二轮...
1voidout_Queue(QUEUE *queue_q ,int*value)2{3if(isemptyQueue(queue_q) !=true)//队列未空4{5*value = queue_q->BUF[queue_q->front];6queue_q->front = (queue_q->front +1)%BUF_SIZE ;7}8} 入队要判满,出队则要判空。 因为空的队列,没办法取数据 4、遍历队列 这就是一个简单的打印...
// 层序遍历voidBinaryTreeLevelOrder(BTNode*root){Queue q;QueueInit(&q);if(root)QueuePush(&q,root);int levelSize=1;while(!QueueEmpty(&q)){// 一层一层出while(levelSize--){BTNode*front=QueueFront(&q);QueuePop(&q);printf("%d ",front->data);if(front->left)QueuePush(&q,front->l...
//出队操作pop void pop(cir_queue *q){ if(q->rear==q->front){ printf("队列为空,无法出队\n"); return; }else{ q->data[q->front]=0; q->front=(q->front+1)%maxsize; } } 4. 循环队列遍历操作 遍历操作需要借助一个临时变量储存位置front的位置信息,利用i逐步向后移动,直到i到达了rea...
对于二叉树的层次遍历,这里我们主要介绍的是第二种思路——通过队列实现二叉树的层序遍历。因此我们还需要定义一个能够存储二叉树的结点的队列,队列的数据类型如下所示: //存放二叉树结点的链队列typedefstructLinkNode{BTN*data;//数据域structLinkNode*next;//指针域}LQN;//链队列的结点类型typedefstructLinkQueue{...
一、queue的介绍和使用 1、queue的介绍 queue详解队列是一种容器适配器,专门用在先进先出操作中,从容器一端插入元素,另一端提取元素队列作为容器适配器实现,就是将特定容器封装成其底层容器类...vector是没有办法满足以上操作的,但deque和list是可以的 2、queue的使
打印队列的操作 printQueue 会依次遍历链表中的节点,输出节点中的数据。如果队列为空,则输出 "Empty queue"。 5、二叉树 5.1、基本原理 二叉树是一种常见的数据结构,它由一个根节点以及左右两个子树组成,每个子树也是一个二叉树。二叉树中的每个节点最多有两个子节点,左子节点和右子节点。它们的顺序是有意义的...
Queue[tail++]=root;//根节点入队 while(front!=tail) { intCsize=0;//每一层的节点个数 intend=tail; //end是每一层最末一个节点的指针。在后续的入队列操作中tail会改变,所以需要保存tail的值 ret[*returnSize]=(int*)malloc(sizeof(int*)*(end-front)); ...
voidprintfQueue(HjQueue queue){printf("遍历队列:");inti=queue.front;while(i!=queue.rear){printf("%d ",queue.data[I]);i=(i+1)%MAX_SIZE;}printf("\n");} 其它辅助代码 #include"stdlib.h"#defineOK 1#defineERROR 0typedefintStatus;intmain(intargc,constchar*argv[]){printf("--顺序队列...
void enterQueue(Queue *q, int value) if (isFull(q)) { printf("Queue is full!\n");return;} q->data[q->rear++] = value;int deleteFromQueue(Queue *q) if (isEmpty(q)) printf("Queue is empty!\n");return -1;return q->data[q->front++];int main() Queue q;initQueue(&q);e...