#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 10
#define DataType int
typedef struct
{
DataType Data[MAXSIZE];
int Front;
int Rear;
}SeQueue;
SeQueue *InitialSeQueue(void);
int EnterSeQueue(SeQueue *S,DataType Elem);
int OutSeQueue(SeQueue *S,DataType Elem);
int IsEmptySeQueue(SeQueue *S);
int IsFullSeQueue(SeQueue *S);
int DestroySeQueue(SeQueue *S);
SeQueue *InitialSeQueue(void)
{
SeQueue *S=NULL;
S=(SeQueue*)malloc(sizeof(SeQueue));
S->Front=-1;
S->Rear=-1;
return S;
}
int EnterSeQueue(SeQueue *S,DataType Elem)
{
if(!IsFullSeQueue(S))
{
S->Data[++S->Rear]=Elem;
printf("Elem that enter the queue: %d \n",S->Data[S->Rear]);
return 0;
}
else
{
printf("Full queue , ends the program.\n");
exit(0);
}
}
int OutSeQueue(SeQueue *S,DataType Elem)
{
int i=0;
if(IsEmptySeQueue(S))
{
printf("Empty queue,ends the program.\n");
exit(0);
}
else
{
Elem=S->Data[0];
printf("Elem that out the Queue : %d \n",S->Data[0]);
for(i=S->Front+1;i<S->Rear;i++)
{
S->Data[i]=S->Data[i+1];
}
}
}
int IsEmptySeQueue(SeQueue *S)
{
return(-1==S->Rear);
}
int IsFullSeQueue(SeQueue *S)
{
return(MAXSIZE==S->Rear);
}
int DestroySeQueue(SeQueue *S)
{
free(S);
S=NULL;
return 0;
}
int main()
{
SeQueue *S=NULL;
DataType data=0;
S=InitialSeQueue( );
EnterSeQueue(S,1);
EnterSeQueue(S,2);
EnterSeQueue(S,3);
EnterSeQueue(S,4);
OutSeQueue(S,data);
OutSeQueue(S,data);
OutSeQueue(S,data);
DestroySeQueue(S);
return 0;
}
队列的基本用法(顺序存储结构)
最新推荐文章于 2021-06-09 20:55:40 发布