/*
* @Description:
* @版本: 2.0
* @作者: jianwen
* @Date: 2019-11-03 15:54:12
* @LastEditors: jianwen
* @LastEditTime: 2019-11-05 15:03:25
*/
#include<iostream>
using namespace std;
typedef int ELEMTYPE;
const int MAXSIZE = 100;
class QNode{
public:
ELEMTYPE data;
QNode *next;
};
class LinkQueue{
public:
QNode *front; //队首指针,指向QNode类型的指针
QNode *rear; //队尾指针
};
class Queue{
public:
void InitQueue(LinkQueue &Q);
bool IsEmpty(LinkQueue &Q);
void EnQueue(LinkQueue &Q,ELEMTYPE e);
void DeQueue(LinkQueue &Q, ELEMTYPE &e);
void PrintQueue(LinkQueue &Q,ELEMTYPE &e);
};
void Queue::InitQueue(LinkQueue &Q){
QNode *q; //申请一个节点的空间
q = new QNode;
q ->next = NULL;
Q.front = q;
Q.rear = q;
}
bool Queue::IsEmpty(LinkQueue &Q){
return (Q.rear == Q.front);
}
void Queue::EnQueue(LinkQueue &Q,ELEMTYPE e){
QNode *p;
p = new QNode;
p->next = NULL;
p->data = e;
Q.rear->next=p;
Q.rear = p;
}
void Queue::DeQueue(LinkQueue &Q,ELEMTYPE &e){
QNode *p;
if (IsEmpty(Q))
cout << "空队列" << endl;
p = Q.front->next;
e = p->data;
Q.front->next = p->next;
if (Q.rear == p)
Q.rear = Q.front;
delete p;
}
void Queue::PrintQueue(LinkQueue &Q,ELEMTYPE &e){
if (IsEmpty(Q))
cout << "空队列" << endl;
QNode *p = new QNode; //开辟一个新空间,放首指针
p = Q.front;
while(Q.front != Q.rear){
e = Q.front->data;
cout << e << " ";
Q.front = Q.front ->next;
}
cout << Q.rear->data << endl;
Q.front = p;
}
int main(){
LinkQueue Q;
Queue q;
ELEMTYPE e, m;
q.InitQueue(Q);
q.IsEmpty(Q);
q.EnQueue(Q,1);
q.EnQueue(Q,2);
q.EnQueue(Q,3);
q.EnQueue(Q,4);
q.EnQueue(Q,5);
q.PrintQueue(Q,m);
q.DeQueue(Q,e);
q.PrintQueue(Q,m);
return 0;
}
队列的链表存储结构C++实现
最新推荐文章于 2021-04-19 13:50:04 发布