队列的顺序实现和链式实现
#include <iostream>
#define MaxSize 100
using namespace std;
typedef int ElemType;
typedef struct {
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &S){
S.front=S.rear=0;
}
bool enQueue(SqQueue &S,ElemType x){
if ((S.rear+1)%MaxSize==S.front)
return false;
S.data[S.rear]=x;
S.rear=(S.rear+1)%MaxSize;
return true;
}
bool deQueue(SqQueue &S,ElemType &x){
if (S.front==S.rear)
return false;
x=S.data[S.front];
S.front=(S.front+1)%MaxSize;
return true;
}
bool isEmpty(SqQueue &S){
if (S.front==S.rear)
return true;
else
return false;
}
#include <iostream>
using namespace std;
typedef int ElemType;
typedef struct
{
ElemType data;
struct LNode *next;
}LNode;
typedef struct
{
struct LNode *front,*rear;
}LinkQueue;
void InitQueue(LinkQueue &Q){
Q.front=Q.rear==(LinkQueue *)malloc(sizeof(LinkQueue));
Q.front->next=NULL;
}
void enQueue(LinkQueue &Q,ElemType x){
LNode *s=(LNode *)malloc(sizeof(LNode));
s->next=NULL;
s->data=x;
Q.rear->next=s;
Q.rear=s;
}
bool deQueue(LinkQueue &Q,ElemType &x){
if (Q.rear==Q.front)
return false;
LNode *s;
s=Q.front->next;
x=s->data;
Q.front=s->next;
if (Q.rear==s)
Q.rear=Q.front;
free(s);
return true;
}
bool isEmpty(LinkQueue &Q){
if(Q.front==Q.rear)
return true;
else
return false;
}