循环队列操作的实现-顺序存储结构

来源:互联网 发布:js radio 赋值 编辑:程序博客网 时间:2024/04/29 20:55
#include <iostream>#include <stdio.h>#define maxsize 50using namespace std;//循环队列typedef struct{    int data[maxsize];    int front,rear;}SqQueue;//初始化void init(SqQueue &q){    q.front=q.rear=0;}//判空bool isempty(SqQueue &q){    if(q.front==q.rear)        return true;    else        return false;}//判满bool isfull(SqQueue &q){    if((q.rear+1)%maxsize==q.front)        return true;    else        return false;}//入队int enqueue(SqQueue &q,int e){    if(isfull(q))        return 0;    q.data[q.rear]=e;    q.rear=(q.rear+1)%maxsize;    return 1;}//出队int dequeue(SqQueue &q,int *e){    if(q.front==q.rear)        return 0;    *e=q.data[q.front];    //printf("%d 出队!",&e);    q.front=(q.front+1)%maxsize;    return 1;}//取队头元素int gettop(SqQueue &q,int *e){    *e=q.data[q.front];    return *e;}//求队列长度int qlength(SqQueue q){    return (q.rear-q.front+maxsize)%maxsize;}//显示void show(SqQueue &q){    for(int i=q.front;i<q.rear;i++){        printf("%d ",q.data[i]);    }    printf("\n");}int main(){    SqQueue s;    int e;    //初始化队列    init(s);    //入队    for(int i=0;i<5;i++)        enqueue(s,i);    show(s);    //出队    dequeue(s,&e);    show(s);    //取队头元素    int x=gettop(s,&e);    printf("%d\n",x);    int len=qlength(s);    printf("%d ",len);    return 0;}

这里写图片描述