基于基地址的循环队列

2019-07-30  本文已影响0人  始于尘埃
//循环顺序队列(queue)的实现
#include <iostream>
#include <string>
using namespace std;
#define Maxsize 100
typedef struct{
    string name;
    int num;
}QElemType;
typedef struct{
    QElemType *base;
    int front;
    int rear;
}SqQueue;

//初始化
bool InitQueue(SqQueue &Q){
    //创建一个含有头结点的队列
    Q.base = new QElemType[Maxsize];
    if(!Q.front) exit(0);
    Q.front = Q.rear; 
}
//求队长度
int QueueLength(SqQueue Q){
    return(Q.rear-Q.front+Maxsize)%Maxsize;
} 
//入队
bool EnQueue(SqQueue &Q,string Name,int Num){
    if((Q.rear+1)%Maxsize == Q.front) return 0;
    Q.base[Q.rear].name = Name;
    Q.base[Q.rear].num =  Num;
    //移动
    Q.rear = ((Q.rear+1)%Maxsize); 
} 
//出
bool DeQueue(SqQueue &Q,string &Name,int &Num){
    if(Q.rear == Q.front) return 0;
    Name = Q.base[Q.front].name;
    Num = Q.base[Q.front].num;
    Q.front = (Q.front+1)%Maxsize;
}
int main(){
    SqQueue q;
    InitQueue(q);
    string Name,s1;
    int Num,s2;
    int i=0,j=0;
    for(i;i<3;i++){
        cout<<"name:"<<"num";
        cin>>Name>>Num;
        EnQueue(q,Name,Num);
    }
    for(j;j<3;j++){
        DeQueue(q,s1,s2);
        cout<<s1<<s2<<"\n"<<endl;
    }
    return 0;
}

上一篇 下一篇

猜你喜欢

热点阅读