数据结构(十一)循环队列的基本操作----6个基本操作

来源:互联网 发布:淘宝店铺运营数据分析 编辑:程序博客网 时间:2024/06/03 10:40
//顺序队列存在一个问题 ---假溢出现象,为了解决这个问题,提出了循环队列//循环队列中存在队空和队满条件一样的情况,因此提出了牺牲一个空间的方法 //循环队列的基本操作 #include <iostream>using namespace std;#define MAXSIZE 5//队列的结构体struct Node{int *base;int front;int rear;}; //队列的初始化操作void initQueue(struct Node &Q){ Q.base = new int[MAXSIZE]; if(Q.base == NULL) { cout<<"地址分配失败\n"; exit(1); } Q.front = Q.rear=0;}//队空的判断int isEmpty(struct Node Q){if(Q.front == Q.rear){return 1; } else{return 0;}} //队满的判断int isFull(struct Node Q){if((Q.rear+1)%MAXSIZE==Q.front){return 1;}else{return 0; }}  //入队列操作void Enqueue(struct Node &Q){int e;cout<<"请输入你要入队的数据:\n";cin>>e;Q.base[Q.rear] = e;Q.rear=(Q.rear+1)%MAXSIZE;} //出队列的操作 void inQueue(struct Node &Q,int &e){e = Q.base[Q.front];Q.front = (Q.front +1)%MAXSIZE;}//队列的实际长度int length(struct Node Q){int len;len = (Q.rear-Q.front+MAXSIZE)%MAXSIZE;return len;}int main(){struct Node Q;initQueue(Q);for(int i=0;i<4;i++){if(isFull(Q)){cout<<"队列已经满了\n";break;}Enqueue(Q);}int e;for(int i=0;i<4;i++){inQueue(Q,e);cout<<e<<" ";}if(isEmpty(Q)){cout<<"队列为空\n";exit(1);}return 0;}

0 0
原创粉丝点击