您的位置:首页 > 其它

循环队列的基本操作

2015-07-25 10:48 351 查看

代码

#include<stdio.h>
#include<stdlib.h>

#define MAXSIZE 5
//定义队列结构体 
typedef struct SqQueen{
    int data[MAXSIZE];
    int front;
    int rear;
}SqQueen;

//打印
void printSqQueen(SqQueen Q){
    int i=Q.front;
//  while((i+Q.front)!=Q.rear){
//      printf("%3d",Q.data[i]);
//      i=(i+1)%MAXSIZE;
//  }
    while(Q.front != Q.rear){
        printf("%3d",Q.data[Q.front]);
        Q.front = (Q.front+1)%MAXSIZE ;
    }
    printf("\n");
} 
//获取长度 
int sqLength(SqQueen Q){
    return (Q.rear-Q.front+MAXSIZE)%MAXSIZE;
}
//初始化
void initSqQueen(SqQueen *Q){
    Q->front = 0;
    Q->rear = 0;
} 
//入队
void inSqQueen(SqQueen *Q,int e){
    if((Q->rear+1)%MAXSIZE == Q->front){
        printf("队列已满!\n");
        exit(-1);
    } 
    Q->data[Q->rear] = e;
    Q->rear = (Q->rear+1)%MAXSIZE; 
    printf("入队:%d\n",e);
}
//出队 
void outSqQueen(SqQueen *Q){
    if(Q->front == Q->rear){
        printf("队列已空!\n");
        exit(-1);
    }   
    printf("出队:%3d\n",Q->data[Q->front]);
    Q->front = (Q->front+1)%MAXSIZE; 
}

int main(){
    SqQueen Q;
    initSqQueen(&Q);
    inSqQueen(&Q,3);
    inSqQueen(&Q,5);
    inSqQueen(&Q,8);
    printSqQueen(Q);
    outSqQueen(&Q);
    printSqQueen(Q); 
    outSqQueen(&Q); 
    outSqQueen(&Q);
    outSqQueen(&Q);
    printSqQueen(Q); 
    printf("Hello world !\n");
    return 0;
}


执行结果

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: