数据结构——顺序队列(sequence queue)
Posted noonjuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据结构——顺序队列(sequence queue)相关的知识,希望对你有一定的参考价值。
/* sequenceQueue.c */ /* 顺序队列 */ #include <stdio.h> #include <stdlib.h> #include <stdbool.h> #define MAXSIZE 100 /* 顺序循环队列数据结构 */ /* 一个圆圈,front指向队列头,rear指向队列尾 */ /* front -> ... -> rear data[0] -> data[...] -> data[n] */ typedef struct int data[MAXSIZE]; int rear, front; int num; /* 队列元素的个数 */ SeqQueue; void interface(void); /* 顺序列表函数声明 */ SeqQueue *initializeSeqQueue(); bool isFullSeqQueue(SeqQueue*); bool isEmptySeqQueue(SeqQueue*); void inSeqQueue(SeqQueue*, int); int outSeqQueue(SeqQueue*); int main() SeqQueue *sq = initializeSeqQueue(); int flag, number; interface(); for(;;) printf("Command: "); scanf("%d", &flag); switch(flag) case 0: printf("Bye!\n"); return 0; break; case 1: if(isFullSeqQueue(sq)) printf("Queue is full!\n"); else printf("Enter number: "); scanf("%d", &number); inSeqQueue(sq, number); break; case 2: if(isEmptySeqQueue(sq)) printf("Queue is empty!\n"); else printf("value: %d\n", outSeqQueue(sq)); break; return 0; void interface(void) puts("+********************+"); puts("+ 0, quit 退出 +"); puts("+ 1, in 入队 +"); puts("+ 2, out 出队 +"); puts("+********************+"); /* 顺序列表函数实现 */ /* 初始化顺序列表,列表为空,front和read都为-1,num为0 */ SeqQueue *initializeSeqQueue() SeqQueue *sq = (SeqQueue*)malloc(sizeof(SeqQueue)); sq->front = sq->rear = -1; sq->num = 0; return sq; /* 判断队列是否为空 */ bool isEmptySeqQueue(SeqQueue *sq) if(sq->num==0) return true; return false; /* 判断队列是否已满 */ bool isFullSeqQueue(SeqQueue *sq) if(sq->num==MAXSIZE) return true; return false; /* 入队 */ void inSeqQueue(SeqQueue *sq, int number) /* 循环队列,取余MAXSIZE */ sq->rear = sq->rear+1 % MAXSIZE; sq->data[sq->rear] = number; sq->num++; /* 出队 */ int outSeqQueue(SeqQueue *sq) sq->front = sq->front+1 % MAXSIZE; sq->num--; return sq->data[sq->front];
以上是关于数据结构——顺序队列(sequence queue)的主要内容,如果未能解决你的问题,请参考以下文章
C/C++数据结构-完整代码队列Queue(顺序存储,链式存储)增删改查
C/C++数据结构-完整代码队列Queue(顺序存储,链式存储)增删改查