//循环队列基本运算
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef struct
{
char data[MAXSIZE];
int rear, front;
}SeQueue;
void Init_SeQueue(SeQueue **s)
{
(*s) = (SeQueue *)malloc(sizeof(SeQueue));
(*s)->front = 0;
(*s)->rear = 0;
}
int Empty_SeQueue(SeQueue *s)
{
if (s->front == s->rear)
{
return 1;
}
else
{
return 0;
}
}
void In_SeQueue(SeQueue *s, char x)
{
if ((s->rear + 1) % MAXSIZE == s->front)
{
printf("Full!\n");
return ;
}
else
{
s->rear = (s->rear + 1) % MAXSIZE;
s->data[s->rear] = x;
}
}
void Out_SeQueue(SeQueue *s, char *x)
{
if (s->front == s->rear)
{
printf("Empty!\n");
return ;
}
else
{
s->front = (s->front + 1) % MAXSIZE;
*x = s->data[s->front];
}
}
void Print(SeQueue *s)
{
int i;
if (Empty_SeQueue(s))
{
printf("Empty!");
return ;
}
i = (s->front + 1) % MAXSIZE;
while (i != s->rear)
{
printf("%4c", s->data[i]);
i = (i + 1) % MAXSIZE;
}
printf("%4c\n", s->data[i]);
}
int main()
{
SeQueue *q;
char x, *p = &x;
Init_SeQueue(&q);
if (Empty_SeQueue(q))
{
printf("Queue is empty!\n");
}
printf("Input any thing: ");
scanf("%c", &x);
while (x != '\n')
{
In_SeQueue(q, x);
scanf("%c", &x);
}
printf("Output elements of Queue:\n");
Print(q);
printf("Output Queue:\n");
Out_SeQueue(q, p);
printf("Element of Output Queue is %c\n", *p);
printf("Output elements of Queue:\n");
Print(q);
return 0;
}
循环队列
最新推荐文章于 2024-04-10 20:20:28 发布