#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]);
}
}
順序隊列的表示
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.