队列—链式队列

张开发
2026/4/8 21:13:43 15 分钟阅读

分享文章

队列—链式队列
#includestdio.h #includeiostream #includestring.h #includestdlib.h #includecassert #includememory.h using namespace std; typedef int ELEMTYPE; //链式队列的有效节点的结构体设计 typedef struct LQueue_Node { ELEMTYPE data;//数据域 LQueue_Node* next;//指针域指向下一个有效节点 }LQueue_Node; //链式队列的辅助节点的结构体设计 typedef struct Link_Queue { LQueue_Node* front;//队头指针用来指向第一个有效节点 LQueue_Node* rear;//队尾指针用来指向最后一个有效节点 }Link_Queue; //1.初始化 void Init_LinkQueue(Link_Queue* plist); //2.入队(尾部入) bool Push(Link_Queue* plist, ELEMTYPE val); //3.出队(头部出) bool Pop(Link_Queue* plist); //4. 获取栈头元素值 ELEMTYPE Front(Link_Queue* plist); //5.判空 bool Empty(Link_Queue* plist); //6.销毁 void Destroy(Link_Queue* plist); //7.打印 void Show(Link_Queue* plist); //1.初始化 void Init_LinkQueue(Link_Queue* plist) { assert(plist ! nullptr); plist-front nullptr; plist-rear nullptr; } //购买节点 LQueue_Node* BuyNode(ELEMTYPE val) { LQueue_Node* p new (LQueue_Node); p-data val; p-next nullptr; return p; } //2.入队(尾部入) bool Push(Link_Queue* plist, ELEMTYPE val) { assert(plist ! nullptr); LQueue_Node* q BuyNode(val); if (q nullptr)return false; if (Empty(plist)) { plist-front q; plist-rear q; } else { plist-rear-next q; plist-rear q; } return true; } //3.出队(头部出) bool Pop(Link_Queue* plist) { assert(plist ! nullptr); if (Empty(plist))return false; LQueue_Node* p plist-front; LQueue_Node* q p-next; plist-front q; delete (p); p nullptr; if (plist-front nullptr) { plist-rear nullptr; } return true; } //4. 获取栈头元素值 ELEMTYPE Front(Link_Queue* plist) { assert(plist ! nullptr); return plist-front-data; } //5.判空 bool Empty(Link_Queue* plist) { assert(plist ! nullptr); return plist-front nullptr; } //6.销毁 void Destroy(Link_Queue* plist) { assert(plist ! nullptr); while (Empty(plist)!false) { Pop(plist); } } //7.打印 void Show(Link_Queue* plist) { assert(plist ! nullptr); LQueue_Node* p plist-front; for (; p ! nullptr; p p-next) { cout p-data; } }

更多文章