队列创建并初始化
入队和出队
清空队列与获取元素个数 打印队列
0. 队列的原理:
就像骚扰女明星,只有我先搞完,出来后,才能你上,先进先出。
1.创建队列并初始化:
#include <iostream>
#include <iomanip>
#include <Windows.h>
#define MaxSize 5
using namespace std;
typedef int DataType;
typedef struct Queue {
DataType quque[MaxSize];
int front;
int rear;
}SeqQueue;
void InitQueue(SeqQueue* SQ) {
if (!SQ) return;
SQ->front = SQ->rear = 0;
}
int main(void){
SeqQueue* SQ = new SeqQueue;
DataType data;
InitQueue(SQ);
system("pause");
return 0;
}
2.入队与出队前的准备
入队:需要判断队列是否为满
出队:需要判断队列是否为空
int IsFull(SeqQueue* SQ) {
if (!SQ) return 0;
if (SQ->rear == MaxSize) {
return 1;
}
return 0;
}
bool IsEmpty(SeqQueue* SQ) {
if (!SQ) return false;
if (SQ->front == SQ->rear) {
return true;
}
return false;
}
入队与出队实现:
int EnterQueue(SeqQueue* SQ, DataType data) {
if (!SQ) return 0;
if (IsFull(SQ)) {
cout << "无法插入元素:" << data << "队列已满!" << endl;
return 0;
}
SQ->quque[SQ->rear] = data;
SQ->rear++;
return 1;
}
bool DeleteQueue1(SeqQueue* SQ, DataType* data) {
if (!SQ || IsEmpty(SQ)) {
cout << "队列为空!" << endl;
return false;
}
if (!data) {
cout << "data为空" << endl;
return false;
}
for (int i = SQ->front+1; i < SQ->rear; i++) {
SQ->quque[i - 1] = SQ->quque[i];
}
SQ->rear--;
return true;
bool DeleteQueque2(SeqQueue* SQ, DataType* data) {
if (!SQ || EmptyQueque(SQ)) {
cout << "队列为空!" << endl;
return false;
}
if (!data) return false;
if (SQ->fron >= MaxSize) {
cout << "队列已到尽头!" << endl;
return false;
}
*data = SQ->quque[SQ->fron];
SQ->fron = (SQ->fron) + 1;
return true;
}
3.清空队列
void ClearQueque(SeqQueue* SQ) {
if (!SQ) return;
SQ->fron = SQ->rear = 0;
return;
}
int Getlength(SeqQueue* SQ) {
if (!SQ) return 0;
return SQ->rear - SQ->fron;
}
void Print(SeqQueue* SQ) {
if (!SQ) return;
int i = SQ->fron;
while (i < SQ->rear) {
cout << setw(4) << SQ->quque[i];
i++;
}
cout << endl;
}
main:
int main(void){
SeqQueue* SQ = new SeqQueue;
DataType data;
InitQueque(SQ);
for (int i = 0; i < 7; i++) {
EnterQueque(SQ, i);
}
cout << "打印队列中的元素(总共):" << Getlength(SQ) << "个";
Print(SQ);
cout << endl;
DeleteQueque1(SQ, &data);
cout << "出对的元素:" << data << endl;
cout << "出队一个元素后,队列中剩下:";
Print(SQ);
cout << endl;
cout << "打印队列中的元素(总共):" << Getlength(SQ) << "个" << endl;
system("pause");
return 0;