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...
=null进入循环,让根节点1入队,rear指针+1, 下面的循环遍历条件是首尾指针不等(rear!=front) 标记一下此时的父结点p就是队列的首结点p=queue[rear],首节点出队front+1,如果当前父节点的左子树不是null,那么左结点入队,rear+1 如果当前父节点的右子树不是null,那么 右节点入队,rear+1.。这样一层遍历就完成了...
依次遍历cur,不为空,size就++。这种遍历的思想不复杂,但时间复杂度达到O(N),不是太好,想要O(1)的话可以直接在当初定义结构体时多定义一个size变量,专门用来记录有效元素个数,每次入队列size++,出队列size--。这样实现是比较好的,不过为了封装成一个独立模块,还是采用遍历的方式。如下:Queue.h 文件: ...
void print_queue(queue *q){ node *n = init_node(); n=q->front; if(empty(q)){ return ; //此时队列为空,直接返回函数结束 } while (n!=NULL){ printf("%d\t",n->data); n=n->next; } printf("\n"); //记得换行 } 遍历操作还有很多变形,比如说进行计算队列中含有多少元素。
*/voidQueueTraverse(SqQueue Q,void(*vi)(QElemType)){inti=Q.front;while(i!=Q.rear){vi(Q.base[i]);//遍历i=(i+1)%MAX_QUEUE_SIZE;}printf("\n");}/** * 遍历函数 * @param e */voidvi(QElemType e){printf("%d ",e);}/** ...
void QueueInit(Queue* pq); //销毁队列 void QueueDestory(Queue* pq); //入队列 void QueuePush(Queue* pq, QDataType x); //出队列 void QueuePop(Queue* pq); //判空 bool QueueEmpty(Queue* pq); //获取有效元素个数 size_t QueueSize(Queue* pq...
int DeQueue(LineQueue *myQueue, int *element); //DeQueue(&Q, &element) 首元素出队void QueueTraverse(LineQueue *myQueue); //QueueTraverse(Q, visit()) 遍历队列int InitQueue(LineQueue **myQueue){ (*myQueue) = (LineQueue *)malloc(sizeof(LineQueue));//申请内存.强制转换,不然会为void无...
//遍历队列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...
2.层次遍历中我们需要用到队列,定义队列头文件如下LinkQueue.h中代码: #ifndef LINKQUEUE_H #define LINKQUEUE_H #include "head.h" #include "BiTree.h" //队列中数据类型为树节点 typedef pBiNode Type; //队列节点 typedef struct Node{ Type data; ...
层序遍历 层序遍历需要用到队列的思想。 这里先给出要用的队列相关函数 代码语言: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)...