您的位置:首页 > 其它

循环队列的基本操作

2016-04-24 22:09 288 查看
#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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: