📄 带队满标记的循环链表.txt
字号:
#include <iostream.h>
#include <conio.h>
const int MaxSize = 50;
typedef char DataType;
//循环队列类的界面
class Queue {
public:
Queue();
void ClearQueue(void);
void EnQueue(DataType x);
DataType DelQueue(void);
DataType GetFront(void);
DataType GetRear(void);
bool IsFull(void);
bool IsEmpty(void);
private:
int front,rear;
bool flag;//当队满时flag为真,否则为假
DataType q[MaxSize];
};
Queue::Queue() {
front = 0;
rear = 0;
flag = false;
}
DataType Queue::GetFront() {
if(IsEmpty()) {
cerr<<"队列已空!!"<<endl;
exit(1);
}
else {
return q[(front+1)%MaxSize];
}
}
DataType Queue::GetRear() {
if(IsEmpty()) {
cerr<<"队列已空!!"<<endl;
exit(1);
}
else {
return q[rear];
}
}
void Queue::EnQueue(DataType x) {
if (IsFull()) {
cerr<<"队列已满!!"<<endl;
cerr<<x<<" 不能进队!"<<endl;
}
else {
rear = (rear+1)%MaxSize;
q[rear] = x;
if(front == rear) flag = true;
}
}
DataType Queue::DelQueue(void) {
if (IsEmpty()) {
cerr<<"队列已空!!"<<endl;
return '#';
}
else {
front = (front+1)%MaxSize;
flag = false;
return q[front];
}
}
bool Queue::IsEmpty(void) {
if((rear == front)&&(!flag)) return true;
else return false;
}
bool Queue::IsFull(void) {
if((rear == front)&&(flag)) return true;
else return false;
}
void Queue::ClearQueue(void) {
// front = 0;
// rear = 0;
rear = front;
}
int main()
{
Queue q;
cout<<"进队次序:"<<endl;
for (char ch='A';ch<='Z';ch++) {
cout<<ch<<" ";
q.EnQueue(ch);
}
cout<<endl;
cout<<"对头元素:"<<q.GetFront()<<endl;
cout<<"对尾元素:"<<q.GetRear()<<endl;
cout<<"出队次序:"<<endl;
for (int i=1;i<=20;i++)
cout<<q.DelQueue()<<" ";
cout<<endl;
getch();
return 0;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -