=null进入循环,让根节点1入队,rear指针+1, 下面的循环遍历条件是首尾指针不等(rear!=front) 标记一下此时的父结点p就是队列的首结点p=queue[rear],首节点出队front+1,如果当前父节点的左子树不是null,那么左结点入队,rear+1 如果当前父节点的右子树不是null,那么 右节点入队,rear+1.。这样一层遍历就完成了...
1//顺序队列的出队2boolQueueDelete(sQqueue *q,int*num){3if(q->front==q->rear){4printf("下溢,出队失败!");5returnfalse;6}7*num=q->data[q->front];8q->front++;9returntrue;10} (6)顺序队列的遍历: 1//遍历顺序队列2voidDispQueue(sQqueue *q){3inti;4i=q->front;5while(i!=q->r...
3. 打印队列元素(遍历) 打印队列的全部元素是在队列不为空的情况下,通过结点的next指向依次遍历并输出元素既可以。 其代码可以表示为 1 2 3 4 5 6 7 8 9 10 11 12 13 //打印队列元素 void print_queue(queue *q){ node *n = init_node(); n=q->front; if(empty(q)){ return ; //此时队列...
这样实现是比较好的,不过为了封装成一个独立模块,还是采用遍历的方式。如下:Queue.h 文件: //获取有效元素个数 size_t QueueSize(Queue* pq); Queue.c 文件: //获取有效元素个数 size_t QueueSize(Queue* pq) { assert(pq); QNode* cur = pq->head; ...
void QueuePush(Queue* pq, QDataType x); //出队列 void QueuePop(Queue* pq); //判空 bool QueueEmpty(Queue* pq); //获取有效元素个数 size_t QueueSize(Queue* pq); //获取队头元素 QDataType QueueFront(Queue* pq); //获取队尾元素 QDataType ...
2.层次遍历中我们需要用到队列,定义队列头文件如下LinkQueue.h中代码: #ifndef LINKQUEUE_H #define LINKQUEUE_H #include "head.h" #include "BiTree.h" //队列中数据类型为树节点 typedef pBiNode Type; //队列节点 typedef struct Node{ Type data; ...
*/StatusDeQueue(SqQueue*Q,QElemType*e){if(Q->front==Q->rear){returnERROR;}*e=Q->base[Q->front];Q->front=(Q->front+1)%MAX_QUEUE_SIZE;//队头指针加 1returnOK;}/** * 初始条件:队列 Q 存在且非空 * 操作结果:从队头到队尾,依次对遍历队列中每个元素 ...
void QueueTraverse(LineQueue *myQueue); //QueueTraverse(Q, visit()) 遍历队列int InitQueue(LineQueue **myQueue){ (*myQueue) = (LineQueue *)malloc(sizeof(LineQueue));//申请内存.强制转换,不然会为void无类型。分配结构体内存 //printf("queue1 = %p\n", (*myQueue)); if(myQueue == ...
//遍历队列voidvTraverseQueue(pQUEUE queue){intiBasic=0;if(bIsEmptyQueue(queue)){printf("队列为空!遍历失败...\r\n");return;}printf("队列数据: ");iBasic=queue->qFront;//队首while(iBasic!=queue->qRear)//直到队尾{printf("%d ",queue->pBasic[iBasic]);//队列值iBasic=(iBasic+1)%QUE...
层序遍历需要用到队列的思想。 这里先给出要用的队列相关函数 代码语言:javascript 复制 //初始化voidQueueInit(Queue*pq){assert(pq);pq->phead=pq->ptail=NULL;pq->size=0;}//销毁voidQueueDestroy(Queue*pq){assert(pq);QNode*cur=pq->phead;while(cur){QNode*next=cur->next;free(cur);cur=next...