一、代码
#include<stdio.h> #include<stdlib.h> #include<malloc.h> #define N 15 typedef struct { int data[N]; //队列数组; int head; //队头; int tail; //队尾; }SeqQueue; SeqQueue *SeqQueueInit() //队列的初始化; { SeqQueue *q; q=(SeqQueue *)malloc(N*sizeof(SeqQueue)); q->head=0; //设置队头; q->tail=0; //设置队尾; return q; } void SeqQueueFree(SeqQueue *q) //释放队列; { if(q!=NULL) free(q); } int SeqQueueIsEmpty(SeqQueue *q) //判断队列是否为空; { return (q->head==q->tail); } int SeqQueueIsFull(SeqQueue *q) //判断队列是否为满; { return (q->tail==N); } void SeqQueueLen(SeqQueue *q) //获取队列的长度; { printf("队列的长度为:%d\n",q->tail-q->head); } void SeqQueueIn(SeqQueue *q) //顺序队列的入队函数; { if(q->tail==N) { printf("队列为满!!!!\n"); return ; } else { int data; printf("输入要入队的元素:"); scanf("%d",&data); q->data[q->tail++]=data; return ; } } void SeqQueueOut(SeqQueue *q) //出队操作; { if(q->head==q->tail) { printf("队列为空!!!!\n"); return ; } else { q->data[q->head++]; return ; } } void SeqQueueGet(SeqQueue *q) //获取队头元素,并输入; { if(SeqQueueIsEmpty(q)) { printf("队列空了!!!!\n"); return ; } else printf("队头元素为:%d\n",q->data[q->head]); } void Operation() //可进行的操作 { printf("所有操作如下:\n"); printf("(1)采用链式存储实现队列的入队操作。\n"); printf("(2)采用链式存储实现队列的出队操作。\n"); printf("(3)采用链式存储实现获取队头操作。\n"); printf("(4)采用链式存储实现获取队列长度的操作。\n"); printf("(-1)退出\n"); printf("请选择:\n"); } int main(void) { int m; SeqQueue *q=SeqQueueInit(); Operation(); do { printf("请输入要进行的操作:"); scanf("%d",&m); switch(m) { case 1: SeqQueueIn(q); break; case 2: SeqQueueOut(q); break; case 3: SeqQueueGet(q); break; case 4: SeqQueueLen(q); break; } }while(m!=-1); return 0; }