typedef struct{
int data[Maxsize];
int front,rear;
}SqQue;
void InitSqQue(SqQue *&q){
q=(SqQue *)malloc(sizeof(SqQue));
q.rear=q.front=-1;
}
bool isEmpty(SqQue *&q){
return q.rear==q.front;
}
bool isFull(SqQue *&q){
return q.rear==Maxsize-1;
}
bool Push(SqQue *&q,int e){
//先判断队列是否满了
if(isFull(q)) return false;
q.rear++;
q.data[q.rear]=e;
return true;
}
bool Pop(SqQue *&q,int &e){
//先判断是否空了
if(isEmpty(q)) return false;
q.front++;
e=q.data[q.front];
return true;
}
队空的条件依旧是:q.rear==q.front;
q.rear=(q.rear+1)%maxsize
这一部分我还是不太理解,麻烦各位大佬评论指点!!!!!
//循环队列
#include
#include
using namespace std;
typedef struct{
int data[5];
int front,rear;
}Queue;
void InitQueue(Queue *&L){
L=(Queue *)malloc(sizeof(Queue));
L->rear=L->front=0;
}
bool isFull(Queue *&L){
return (L->rear+1)%5==L->front;
}
bool isEmpty(Queue *&L){
return L->front==L->rear;
}
void pop(Queue *&L,int &e){
if(isEmpty(L)){
cout<<"空了";
return;
}else{
e=L->data[L->front];
L->front=(L->front+1)%5;
}
}
void push(Queue *&L,int &e){
if(isFull(L)){
cout<<"满了";
return;
}else{
L->data[L->rear]=e;
L->rear=(L->rear+1)%5;
}
}
void print(Queue *&L){
while(!isEmpty(L)){
int e;
pop(L,e);
cout<<e<<" ";
}
}
int main(){
char ch;
Queue *L;
InitQueue(L);
cin>>ch;
while(ch!='T'){
if(ch=='p'){
int item;
cout<<"进队元素:";
cin>>item;
push(L,item);
cout<<"\n";
}
if(ch=='q'){
int item;
cout<<"出队元素:";
pop(L,item);
cout<<item<<"\n";
}
if(ch=='s'){
print(L);
}
cin>>ch;
}
}
//循环队列
#include
#include
using namespace std;
typedef struct{
int data[5];
int front,rear;
bool flag=false;
}Queue;
void InitQueue(Queue *&L){
L=(Queue *)malloc(sizeof(Queue));
L->rear=L->front=0;
}
bool isFull(Queue *&L){
return L->front==L->rear&&L->flag==true;
}
bool isEmpty(Queue *&L){
return L->front==L->rear&&L->flag==false;
}
void pop(Queue *&L,int &e){
if(isEmpty(L)){
cout<<"空了";
return;
}else{
e=L->data[L->front];
L->front=(L->front+1)%5;
L->flag=false;
}
}
void push(Queue *&L,int &e){
if(isFull(L)){
cout<<"满了";
return;
}else{
L->data[L->rear]=e;
L->rear=(L->rear+1)%5;
L->flag=true;
}
}
void print(Queue *&L){
while(!isEmpty(L)){
int e;
pop(L,e);
cout<<e<<" ";
}
}
int main(){
char ch;
Queue *L;
InitQueue(L);
cin>>ch;
while(ch!='T'){
if(ch=='p'){
int item;
cout<<"进队元素:";
cin>>item;
push(L,item);
cout<<"\n";
}
if(ch=='q'){
int item;
cout<<"出队元素:";
pop(L,item);
cout<<item<<"\n";
}
if(ch=='s'){
print(L);
}
cin>>ch;
}
}