前两天因为一些事情耽误了博客,今天努力把鸽掉的补回来,加油加油
关于循环队列(先进先出)的知识点总结如下:
1.空队:front=rear;
2.入队:queue[rear]=A; rear=(rear+1)%Maxsize;
3.出队:e=queue[front]; front=(front+1)%Maxsize;
4.满队:(rear+1)%Maxsize=front;
关于c++的中输出cout的知识:
1.cout<<("Hello World! \n")//换一行
cout<<("Hello World! \n\n")//换两行
cout<<("Hello World! ")<<endl//同样具有换行的作用
2.char myage=15
cout<<("I am")<<myAge<<("years old.")<<endl;
3.int myNum=5;
double myFloatNum=5.99;
char myLetter='D';
string myText="Hello";
bool myBoolean=true;
4.int x=1;
int y=2;
cout<<x+y<<endl;//输出3
———————————————————————————————————————————实现代码:
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
using namespace std;
#define Status int
#define QElemType int
#define MaxQSize 100
//循环队列的数据结构定义
typedef struct {
QElemType data[MaxQSize];//数据域
int front, rear;//队头指针,队尾指针
}SqQueue;//普通类型数组,数组引用Q.front,指针引用Q->front
//********************************************************基本操作函数*********************************************
//循环队列的初始化
Status InitQueue(SqQueue& Q) {
Q.front = Q.rear = 0;
return 1;
}
//循环队列的打印求长度
Status QueueLength(SqQueue Q) {
return((Q.rear-Q.front+MaxQSize)%MaxQSize);//防止出现循环队列rear的值小于front出现负值的情况
}
//判断队列是否为空
bool QueueEmpty(SqQueue Q) {
if (Q.front==Q.rear) return true;
else return false;
}
//循环队列的入队
bool EnQueue(SqQueue& Q, QElemType e) {
if ((Q.rear+1)%MaxQSize==Q.front) return false;//注意此时队满的异常情况
Q.data[Q.rear] = e;
Q.rear = (Q.rear+1) % MaxQSize;
return true;
}
//循环队列的出队
bool DeQueue(SqQueue& Q, QElemType& e) {
if (QueueEmpty(Q)) return false;//利用QueueEmpty函数判断队空的异常情况
e = Q.data[Q.front];
Q.front = (Q.front + 1) % MaxQSize;
return true;
}
//读取队头元素
bool GetHead(SqQueue& Q, QElemType e) {
if (QueueEmpty(Q)) return false;
e = Q.data[Q.front];
return true;
}
//*******************************************************功能实现函数***********************************************
//入队功能函数
void EnterToQueue(SqQueue& Q) {
int n; QElemType e; int flag;
cout <<("请输入出队元素个数(>=1): ") << endl;
cin >> n;
for ( int i = 0; i < n; i++){
cout << ("请输入第")<< i+1 <<("个元素的值") << endl;
cin >> e;
flag = EnQueue(Q, e);
if (flag) cout << e << ("已入队") << endl;
else {
cout << ("队已满!") << endl;
break;
}
}
}
//出队功能函数
void DeletFromQueue(SqQueue &Q) {
int n; QElemType e=0; int flag;
cout << ("请输入出队元素个数(>=1): ") << endl;
cin >> n;
for (int i = 0; i < n; i++){
flag = DeQueue(Q, e);
if (flag) cout << e << ("已出队") << endl;
else{
cout << ("队已空!") << endl;
break;
}
}
}
//读取队头功能函数
void GetHeadOfQueue(SqQueue Q) {
QElemType e=0; bool flag;
flag = GetHead(Q, e);
if (flag) cout << ("队头元素为: ") << e << endl;
else cout << ("队已空!") << endl;
}
//菜单
void menu() {
cout << ("1.入队 2.出队") << endl;
cout << ("3.取队头元素 4.退出") << endl;
}
//主函数
int main() {
SqQueue Q; int choice;
InitQueue(Q);
while (1){
menu();
cout << ("请输入菜单序号: ") << endl;
cin >> choice;
if (choice == 4) break;
switch (choice){
case 1:EnterToQueue(Q); break;
case 2:DeletFromQueue(Q); break;
case 3:GetHeadOfQueue(Q); break;
default:cout << ("输入错误!") << endl;
}
}
return 0;
}
——————————————————————————————————————————
实现效果: