1//链队列的出队2voidQueueDelete(sQueue *q,int*num){3lnode *p;4if(q->front==q->rear){5printf("队空,出队失败!\n");6return;7}8p=q->front->next;9*num=p->data;10q->front->next=p->next;11if(q->rear==p)q->rear=q->front;12free(p);13} (5)链队列的遍历 1//链队列的...
// 层序遍历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...
* 操作结果:从队头到队尾,依次对遍历队列中每个元素 * @param Q * @param vi */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){...
void QueuePush(Queue* pq, QDataType x); //出队列 void QueuePop(Queue* pq); //判空 bool QueueEmpty(Queue* pq); //获取有效元素个数 size_t QueueSize(Queue* pq); //获取队头元素 QDataType QueueFront(Queue* pq); //获取队尾元素 QDataType QueueBack(Queue* pq); Que...
typedef struct Queue{ int data[MAX_SIZE]; int front,rear; } Queue, *PQueue; /* 函数声明区 */ PQueue CreateQueue(void); //新建队列 bool QueueEmpty(PQueue); //判空返1 bool QueueFull(PQueue Q); //判满返1 int InQueue(PQueue Q,int val); //val 入队 ...
;} 11 为了实现广度优先遍历,需要借助一个队列 typedef struct{ int queuemem[MAX_QUEUEMEM]; int header; int rear;}QUEUE;void InitQueue(QUEUE *queue){queue->header = 0;queue->rear = 0;}void EnQueue(QUEUE *queue,int v){queue->queuemem[queue->rear] = v;queue->rear++;}int...
queue->Rear = queue->Front;free(P);//释放头队列P = NULL;//防止产生野指针printf("出栈成功,出栈值为 %d\n", *val); }//定义队列遍历函数voidTraverseQueue(PQueue queue) {if(IsEmptyQueue(queue)) { exit(-1); } PNODE P= queue->Front->Next;//从队列首节点开始遍历(非头节点,注意区分)...
通过该实验,使学生理解二叉树的链式存储,掌握二叉树的几种遍历算法,并通过该实验使学生理解递归的含义,掌握C语言编写递归函数的方法和注意事项. 2)实验内容 实现教材中算法6.4描述的二叉树创建算法,在此基础上实现二叉树的先序、后序递归遍历算法、两种非递归中序遍历、层序遍历、求二叉树的深度。注意:在非递归算法...
遍历操作也顺利成章: 代码语言:javascript 复制 voidprint(struct queue*q){struct node*n=q->front;while(n!=NULL){std::cout<<n->data;n=n->next;}} 至此队列结束,考虑到排版问题,对着三种结构的总结放到下面一片文章。
思路:就是把空也当作二叉树的节点放进去,然后运用层序遍历, 如果在遍历的中间过程中遇到空就说明不是完全二叉树。 队列不能直接像数组一样遍历 //判断一棵树是不是完全二叉树bool BinaryTreeComplete(BTNode* root){Queue q;QueueInit(&q);if (root){QueuePush(&q, root);//先插入根节点}while (!QueueEm...