#include <stdio.h> #include <stdlib.h> typedef enum {true, false} bool; typedef struct Queue { int * pBase; int front; int rear; }QUEUE, *pQUEUE; void init(pQUEUE pQ); bool en_queue(pQUEUE pQ, int val); void traverse_queue(pQUEUE pQ); bool full_queue(pQUEUE pQ); bool out_queue(pQUEUE pQ, int *pVal); bool emput_queue(pQUEUE pQ); int main(void) { 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) == true) { printf("出队成功,出队的值为: %d\n", val); } else { printf("出队失败!\n"); } traverse_queue(&Q); return 0; } void init(pQUEUE pQ) { pQ->pBase = (int *)malloc(sizeof(int) * 6); pQ->front = 0; pQ->rear = 0; return; } bool full_queue(pQUEUE pQ) { if ( (pQ->rear + 1) % 6 == pQ->front ) return true; else return false; } bool en_queue(pQUEUE pQ, int val) { if ( full_queue(pQ) == true) { return false; } else { pQ->pBase[pQ->rear] = val; pQ->rear = (pQ->rear+1) % 6; return true; } } void traverse_queue(pQUEUE pQ) { if (emput_queue(pQ) == true) { printf("队列为空!\n"); exit(-1); } int i = pQ->front; while (i != pQ->rear) { printf("%d ", pQ->pBase[i]); i = (i+1) % 6; } printf("\n"); return; } bool emput_queue(pQUEUE pQ) { if ( pQ->front == pQ->rear ) return true; else return false; } bool out_queue(pQUEUE pQ, int *pVal) { if ( emput_queue(pQ) == true ) { return false; } else { *pVal = pQ->pBase[pQ->front]; pQ->front = (pQ->front+1) % 6; return true; } }
C语言实现顺序队列
猜你喜欢
转载自blog.csdn.net/zyz1431/article/details/79409166
今日推荐
周排行