#define QUEUESIZE 50//定义队列的最大容量 typedef char DataType;//定义队列元素的类型为字符类型 #include<stdio.h> typedef struct Squeue//顺序队列类型定义 { DataType queue[QUEUESIZE]; int front,rear; }SeqQueue; char x; void InitQueue(SeqQueue *SQ) //将顺序队列初始化为空队列只需要把队头指针和队尾指针同时置为0 { SQ->front=SQ->rear=0; } int QueueEmpty(SeqQueue SQ) //判断队列是否为空,队列为空返回1,否则返回0 { if(SQ.front==SQ.rear)//判断队头指针和队尾指针是否相等 return 1; else return 0; } int EnQueue(SeqQueue *SQ,DataType e) //将元素e插入到顺序队列SQ中,插入成功返回1,否则返回0 { if(SQ->rear==QUEUESIZE)//在插入新的元素之前,判断队列是否已满 return 0; SQ->queue[SQ->rear]=x;//再队尾插入元素x SQ->rear=SQ->rear+1;//队尾指针向后移动一个位置 return 1; } int DeQueue(SeqQueue *SQ,DataType *e) //删除顺序队列中的队头元素,并将该元素赋值给e,删除成功返回1,否则返回0 { if(SQ->front==SQ->rear)//在删除元素之前,判断队列是否为空 return 0; else { *e=SQ->queue[SQ->front];//将要删除的元素赋值给e SQ->front=SQ->front+1;//将队头指针向后移动一个位置,指向新的队头 return 1; } } void main() { SeqQueue Q; char str[]="ABCDEFGH"; int i,length=8; char x; InitQueue(&Q); for(i=0;i<length;i++) { EnQueue(&Q,str[i]);//将字符依次插入到顺序队列中 } DeQueue(&Q,&x); printf("出队列的元素为:%c\n",x);//显示输出出队列的元素 printf("顺序队列中的元素为:\n"); if(!QueueEmpty(Q)) { for(i=Q.front ;i<Q.rear ;i++) //输出队头指针到队尾指针之间的元素,即队列的所有元素 printf("%c",Q.queue [i]); } }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-11-06 06:11:35