#include<iostream>
using namespace std;
//这里没有设置头结点,但链队列一般设置头结点较好
//有头结点的话,插入删除就不用特殊考虑了
typedef struct LNode {
int data;
struct LNode* next;
}LinkLNode;
typedef struct {
LinkLNode* front,* rear;
}Queue;
void initQueue(Queue& Q) {
Q.front = Q.rear = NULL;
}
bool empty(Queue Q) {
if (Q.front ==NULL&&Q.rear==NULL)
return true;
return false;
}
void enQueue(Queue& Q,int e) {
LNode* p = new LNode;
p->data = e;
if (empty(Q)) {
Q.rear = p;
Q.front = p;
Q.rear->next = NULL;
}
else {
Q.rear->next = p;
Q.rear=p;
Q.rear->next = NULL;
}
}
void deQueue(Queue& Q, int& e) {
if (empty(Q))
return;
else if(Q.front==Q.rear) {
e = Q.front->data;
Q.front = Q.rear = NULL;
}
else {
e = Q.front->data;
Q.front = Q.front->next;
}
}
void printf(Queue Q) {
LNode* p = Q.front;
while (p) {
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main() {
Queue Q;
initQueue(Q);
enQueue(Q, 1);
enQueue(Q, 2);
enQueue(Q, 3);
printf(Q);
int a;
deQueue(Q, a);
deQueue(Q, a);
cout << a << endl;
deQueue(Q,a);
cout << a << endl;
if (empty(Q))
cout << "空" << endl;
return 0;
}
复习,链队列,有无头结点
最新推荐文章于 2023-02-25 10:56:19 发布