循环队列
#include <iostream>
using namespace std;
#define maxSize 10
typedef struct {
int data[maxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &Q) {
Q.front = 0;
Q.rear = 0;
}
bool QueueEmpty(SqQueue Q) {
if (Q.rear == Q.front) return true;
return false;
}
bool EnQueue(SqQueue &Q,int x) {
if (Q.front == (Q.rear+1)%maxSize) return false;
Q.data[Q.rear] = x;
Q.rear = (Q.rear+1)%maxSize;
return true;
}
bool DeQueue(SqQueue &Q,int &x) {
if (Q.front == Q.rear) return false;
x = Q.data[Q.front];
Q.front = (Q.front+1)%maxSize;
return true;
}
bool GetQueue(SqQueue Q,int &x) {
if (Q.front == Q.rear) return false;
x = Q.data[Q.front];
return true;
}
int main() {
SqQueue Q;
InitQueue(Q);
int data,x,i=1;
cout<<"请输入数据存入队列中,输入-1结束入队!"<<endl;
cin>>data;
while(data != -1) {
if (Q.front == (Q.rear+1)%maxSize) {
cout<<"入队失败,队列已满!"<<endl;
break;
} else {
EnQueue(Q,data);
}
cout<<"请输入数据存入队列中,输入-1结束入队!"<<endl;
cin>>data;
}
cout<<endl;
cout<<"开始执行出队!"<<endl;
while(DeQueue(Q,x)) {
cout<<"第"<<i++<<"个出队元素为:"<<x<<endl;
}
cout<<"出队结束!"<<endl;
system("pause");
return 0;
}
链式队列
#include <iostream>
using namespace std;
typedef struct LinkNode {
int data;
struct LinkNode *next;
}LinkNode;
typedef struct {
LinkNode *front,*rear;
}LinkQueue;
void InitQueue(LinkQueue &Q) {
Q.front = Q.rear = (LinkNode *)malloc(sizeof(LinkNode));
Q.front->next = NULL;
}
bool QueueEmpty(LinkQueue Q) {
if (Q.front == Q.rear) return true;
return false;
}
bool EnQueue(LinkQueue &Q,int x) {
LinkNode *p = (LinkNode *)malloc(sizeof(LinkNode));
p->data = x;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
bool DeQueue(LinkQueue &Q,int &x) {
if (Q.front == Q.rear) return false;
LinkNode *p = Q.front->next;
x = p->data;
Q.front->next = p->next;
if (Q.rear == p) {
Q.rear == Q.front;
}
free(p);
return true;
}
bool GetQueue(LinkQueue Q,int &x) {
if (Q.front == Q.rear) return false;
x = Q.front->next->data;
return true;
}
int main() {
LinkQueue Q;
InitQueue(Q);
int data,x,i=1;
cout<<"请输入数据存入队列中,输入-1结束入队!"<<endl;
cin>>data;
while(data != -1) {
EnQueue(Q,data);
cout<<"请输入数据存入队列中,输入-1结束入队!"<<endl;
cin>>data;
}
cout<<endl;
cout<<"开始执行出队!"<<endl;
while(DeQueue(Q,x)) {
cout<<"第"<<i++<<"个出队元素为:"<<x<<endl;
}
cout<<"出队结束!"<<endl;
system("pause");
return 0;
}