队列的操作
Posted spore
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了队列的操作相关的知识,希望对你有一定的参考价值。
#include <stdio.h> #include <stdbool.h> #include <stdlib.h> #include <malloc.h> typedef struct Queue int * pBase; //数组的首地址 int front; int rear; QUEUE; void init(QUEUE * ); bool en_queue(QUEUE *, int ); void traverse_queue(QUEUE *); bool full_queue(QUEUE *); bool out_queue(QUEUE * , int * ); bool emput_queue(QUEUE *); int main() QUEUE Q; int val; init(&Q); /*en_queue(&Q, 1); en_queue(&Q, 2); en_queue(&Q, 3); en_queue(&Q, 4); en_queue(&Q, 5); en_queue(&Q, 6); en_queue(&Q, 7); en_queue(&Q, 8);*/ traverse_queue(&Q); if(out_queue(&Q, &val)) printf("出队成功,队列出队的元素是: %d\n", val); else printf("出队失败!\n"); traverse_queue(&Q); return 0; void init(QUEUE * pQ) pQ->pBase = (int *)malloc(sizeof(int)*6); pQ->front = 0; pQ->rear = 0; bool full_queue(QUEUE * pQ) if((pQ->rear+1)%6==pQ->front) return true; else return false; void traverse_queue(QUEUE * pQ) //从头部遍历 int i = pQ->front; while(i!=pQ->rear) printf("%d ", pQ->pBase[i]); i = (i+1)%6; printf("\n"); return; bool en_queue(QUEUE * pQ, int val) //入队 if(full_queue(pQ)) return false; else pQ->pBase[pQ->rear] = val; pQ->rear = (pQ->rear+1)%6; return true; bool emput_queue(QUEUE * pQ) //判断队空 if(pQ->rear==pQ->pBase) return true; else return false; bool out_queue(QUEUE * pQ, int * pVal) if(emput_queue(pQ)) return false; else *pVal = pQ->pBase[pQ->front]; pQ->front = (pQ->front+1)%6; return true;
以上是关于队列的操作的主要内容,如果未能解决你的问题,请参考以下文章