本题要求实现队列的顺序存储表示,包括入队、出队和取队头操作
函数接口定义:
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)
{
squeue->elem[squeue->r]=x;
squeue->r=(squeue->r+1)%squeue->Max;
return;
}
void DeQueue_seq(SeqQueue squeue)
{
squeue->f=(squeue->f+1)%squeue->Max;
}
DataType FrontQueue_seq(SeqQueue squeue)
{
if(IsNullQueue_seq(squeue))
{
printf("It is empty queue!");
}
else
{
if((squeue->f+1)%squeue->Max==squeue->f)
{
printf("It is FULL Queue!It is FULL Queue!%c",squeue->elem[squeue->f]);
}
else
{
return squeue->elem[squeue->f];
}
}
}