#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 20
typedef struct{
char data[MAXSIZE];
int rear;
int front;
}SeqQueue;
SeqQueue * init(){
SeqQueue * sq;
sq = (SeqQueue *)malloc(sizeof(SeqQueue));
sq->rear = 0;
sq->front = 0;
return sq;
}
void inSeqQueue(SeqQueue * sq,char x){
if((sq->rear+1)%MAXSIZE == sq->front){
printf("the queue is full!\n");
}else{
sq->rear = (sq->rear + 1) % MAXSIZE;
sq->data[sq->rear] = x;
}
}
char outSeqQueue(SeqQueue * sq){
char x;
if(sq->rear == sq->front){
printf("the queue is empty!\n");
return '0';
}else{
sq->front = (sq->front + 1) % MAXSIZE;
x = sq->data[sq->front];
return x;
}
}
void print(SeqQueue * sq){
int i;
i = (sq->front + 1) % MAXSIZE;
while(i != sq->rear){
printf("%4c",sq->data[i]);
i = (i+1) % MAXSIZE;
}
printf("%4c",sq->data[i]);
printf("\n");
}
int main(){
SeqQueue * sq;
char x;
char y;
sq = init();
printf("please input the values of the queue!\n");
scanf("%c",&x);
while(x!='\n'){
inSeqQueue(sq,x);
scanf("%c",&x);
}
print(sq);
printf("after output (once)\n");
y = outSeqQueue(sq);
printf("the output value is:%c\n",y);
print(sq);
printf("after output (twice)\n");
y = outSeqQueue(sq);
printf("the output value is:%c\n",y);
print(sq);
return 0;
}
循环队列的基本操作
最新推荐文章于 2022-05-16 16:46:54 发布