本题要求实现队列的顺序存储表示,包括入队、出队和取队头操作
函数接口定义:
void EnQueue_seq(SeqQueue squeue, DataType x) ;
void DeQueue_seq(SeqQueue squeue) ;
DataType FrontQueue_seq(SeqQueue squeue) ;
其中,squeue 是操作的队列,x是入队的元素
裁判测试程序样例:
#include <stdio.h>
#include <stdlib.h>
typedef char DataType;
struct Queue
{
int Max;
int f;
int r;
DataType *elem;
};
typedef struct Queue *SeqQueue;
SeqQueue SetNullQueue_seq(int m)
{
SeqQueue squeue;
squeue = (SeqQueue)malloc(sizeof(struct Queue));
if (squeue == NULL)
{
printf("Alloc failure\n");
return NULL;
}
squeue->elem = (char*)malloc(sizeof(DataType)*m);
if (squeue->elem != NULL)
{
squeue->Max = m;
squeue->f = 0;
squeue->r = 0;
return squeue;
}
}
int IsNullQueue_seq(SeqQueue squeue)
{
return (squeue->f == squeue->r);
}
void EnQueue_seq(SeqQueue squeue, DataType x)
{
@@
}
void DeQueue_seq(SeqQueue squeue)
{
@@
}
DataType FrontQueue_seq(SeqQueue squeue)
{
@@
}
int main()
{
char ch;
SeqQueue queueA = SetNullQueue_seq(5);
ch = getchar();
while (ch != '#')
{
EnQueue_seq(queueA, ch);
ch = getchar();
}
DeQueue_seq(queueA);
printf("%c" ,FrontQueue_seq(queueA));
return 0;
}
输入样例:
ABCD#
结尾无空行
输出样例:
B
结尾无空行
输入样例:
A#
结尾无空行
输出样例:
It is empty queue!
结尾无空行
输入样例:
ABCDEF#
结尾无空行
输出样例:
It is FULL Queue!It is FULL Queue!B
结尾无空行
void EnQueue_seq(SeqQueue squeue, DataType x) {
if((squeue->r+1)%squeue->Max!=squeue->f){
squeue->r=(squeue->r+1)%squeue->Max;
squeue->elem[squeue->r]=x;
}
else printf("It is FULL Queue!");
}
void DeQueue_seq(SeqQueue squeue){
if(squeue->r!=squeue->f){
squeue->f=(squeue->f+1)%squeue->Max;
}
}
DataType FrontQueue_seq(SeqQueue squeue){
if(squeue->r==squeue->f)printf("It is empty queue!");
return squeue->elem[(squeue->f+1)%squeue->Max];
}