順序隊列的表示

#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]);
	}
}

發佈了94 篇原創文章 · 獲贊 29 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章