//采用链式存储结构实现队列,包括进队、出队、队空操作
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
#define N 5
struct Node
{
int c;
Node *link;
};
struct LinkQueue
{
LinkQueue() {
front = nullptr; rear = nullptr;
}
~LinkQueue() { release(); }
Node *front;
Node *rear;
int DeQueue();//出队
void EnQueue(int c);//入队
bool isempty();//判断队空
void print();
void release();
};
int LinkQueue::DeQueue()
{
if (isempty()) {
cout << "队空,无法删除" << endl;
return -1;
}
struct Node *p = front;
front = front->link;
char c = p->c;
delete p;
return c;
}
void LinkQueue::EnQueue(int c)
{
Node *p = new Node;
p->c = c;
p->link = 0;
if (front == 0 && rear == 0) {
front = p;
rear = p;
}
else {
rear->link = p;
rear = p;
}
}
bool LinkQueue::isempty()
{
if (front == 0) {
return true;
}
else {
return false;
}
}
void LinkQueue::print()
{
if (isempty()) {
cout << "队空" << endl;
return;
}
Node *p = front;
while (p) {
printf("%d ", p->c);
p = p->link;
}
printf("\n");
}
void LinkQueue::release()
{
if (isempty()) return;
Node *p = front;
while (front) {
front = front->link;
delete p;
p = front;
}
}
int main()
{
LinkQueue q;
int d;
q.print();
//输入字符
cout << "请输入" << N << "个数" << endl;
for (int i = 0; i < N; i++) {
scanf_s("%d", &d);
q.EnQueue(d);
}
q.print();
cout << "再输入一个数入队" << endl;
scanf_s("%d", &d);
q.EnQueue(d);
int de = q.DeQueue();
cout << "表头" << de << "出队后的队列为:" << endl;
q.print();
//删除过度
for (int i = 0; i < N + 1; i++) {
de = q.DeQueue();
cout << "表头" << de << "出队后的队列为:" << endl;
q.print();
printf("\n");
}
return 0;
}
链式存储结构实现队列
最新推荐文章于 2022-07-25 22:11:36 发布