#include<stdio.h>
#include<iostream>
typedef struct QNode {
int data;
QNode* next;
}*QnodePtr;
typedef struct LinkQuene {
QnodePtr font; //头指征
QnodePtr rear; //尾指针
bool InitQuene(LinkQuene& Q);
bool DestoryQuene(LinkQuene& Q);
bool EnQuene(LinkQuene& Q, int e);
bool DeQuene(LinkQuene& Q, int &e);
void PrintQuene(LinkQuene Q);
};
bool LinkQuene::InitQuene(LinkQuene& Q) {
Q.rear = (QnodePtr)malloc(sizeof(QNode));
if (!Q.rear)return false;
Q.font = Q.rear;
Q.rear->next = NULL;
return true;
}
bool LinkQuene::DestoryQuene(LinkQuene& Q) {
while (Q.font)
{
Q.rear = Q.font->next;
free(Q.font);
Q.font = Q.rear;
}
return true;
}
bool LinkQuene::EnQuene(LinkQuene& Q, int e) {
QnodePtr p = (QnodePtr)malloc(sizeof(QNode));
if (!p)return false;
p->data = e;
p->next = NULL;
Q.rear->next = p;
Q.rear = p;
return true;
}
bool LinkQuene::DeQuene(LinkQuene& Q, int& e) {
if (Q.rear == Q.font)return false; //空
QnodePtr p ;
p = Q.font->next;
e = p->data;
Q.font->next = p->next;
if (p == Q.rear)Q.rear = Q.font; //空
free(p);
return true;
}
void LinkQuene::PrintQuene(LinkQuene Q) {
while (Q.font!=Q.rear)
{
std::cout << Q.font->next->data<<" ";
Q.font = Q.font->next;
}
std::cout<<std::endl;
}
int main() {
//test
LinkQuene Test;
if(!Test.InitQuene(Test))std::cout<<"初始化错误"<<std::endl;//初始化
for (int i = 0; i < 5; i++) {
if (!Test.EnQuene(Test, i))std::cout << "插入数据出错" << std::endl; //加入测试数据
}
Test.PrintQuene(Test);
std::cout << "增加元素10" << std::endl;
Test.EnQuene(Test, 10);
Test.PrintQuene(Test);
std::cout << "删减第一个元素" << std::endl; //队列FIFO
int data;
Test.DeQuene(Test, data);
Test.PrintQuene(Test);
return 0;
}
LinkQuene 链表队列
最新推荐文章于 2023-09-08 16:50:56 发布