数据结构——链队列

编程入门 行业动态 更新时间:2024-10-07 18:27:34

<a href=https://www.elefans.com/category/jswz/34/1769880.html style=数据结构——链队列"/>

数据结构——链队列

链队列

空队列

元素x入队列

元素y入队列

元素x出队列

C++代码实现

/*------链队列基本操作-------*/
/*
front指针指向头结点(第一个结点的前一个)
rear指针指向最后一个结点
*/
#include<iostream>
#include<stdlib.h>
using namespace std;#define OK 1
#define ERROR -1
#define OVERFLOW -2typedef int Status;
typedef int QElemType;#define MAXSIZE 100typedef struct Qnode {QElemType data;struct Qnode* next;
}Qnode, * QueuePtr;typedef struct {QueuePtr front;QueuePtr rear;
}LinkQueue;Status InitLQueue(LinkQueue& Q) {Q.front = new Qnode;if (!Q.front) exit(OVERFLOW);Q.rear = Q.front;Q.front->next = NULL;return OK;
}// 判断链队列是否为空
bool LQueueEmpty(LinkQueue Q) {return (Q.front == Q.rear);
}// 入队
Status PushLQueue(LinkQueue& Q, QElemType e) {QueuePtr q;q = new Qnode;if (!q)  exit(OVERFLOW);q->data = e;q->next = NULL;Q.rear->next = q;Q.rear = q;return OK;
}// 出队
Status PopLQueue(LinkQueue& Q, QElemType& e) {QueuePtr q;if(LQueueEmpty(Q)) return ERROR;q = Q.front->next;e = q->data;Q.front->next = q->next;if (Q.rear == q) Q.rear = Q.front;delete q;return OK;
}// 销毁链队列
Status DestroyQueue(LinkQueue& Q) {while (Q.front) {Q.rear = Q.front->next;delete Q.front;Q.front = Q.rear;}return OK;
}// 获取队头元素
Status GetHead(LinkQueue Q, QElemType& e) {if (LQueueEmpty(Q)) return ERROR;e = Q.front->next->data;return OK;
}// 创建链队列
void CreateLQueue(LinkQueue& Q, int m) {QElemType e;for (int i = 1; i <= m; i++) {cout << "请输入第" << i << "个元素: ";cin >> e;PushLQueue(Q, e);}
}// 输出链队列
void OutPut(LinkQueue Q) {QueuePtr q;q = new Qnode;q = Q.front->next;while (q) {cout << q->data << " ";q = q->next;}cout << endl;
}int main()
{// 测试代码LinkQueue Q;int m;QElemType e;InitLQueue(Q);cout << "请输入链队列的长度: ";cin >> m;CreateLQueue(Q, m);cout << "链队列元素为: ";OutPut(Q);GetHead(Q, e);cout << "队头元素为: " << e << endl;cout << "请输入入队元素: ";cin >> e;PushLQueue(Q, e);cout << "链队列元素为: ";OutPut(Q);PopLQueue(Q, e);cout << "出列元素为: " << e << endl;cout << "链队列元素为: ";OutPut(Q);return 0;
}
请输入链队列的长度: 3
请输入第1个元素: 1
请输入第2个元素: 2
请输入第3个元素: 3
链队列元素为: 1 2 3
队头元素为: 1
请输入入队元素: 4
链队列元素为: 1 2 3 4
出队元素为: 1
链队列元素为: 2 3 4

更多推荐

数据结构——链队列

本文发布于:2024-02-13 17:48:42,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1760106.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数据结构   队列

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!