队列的链式存储结构
来源:互联网 发布:雕刻机编程方法 编辑:程序博客网 时间:2024/05/16 04:42
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,我们把它简称为链队列,为了操作的方便,我们将队头指针指向链队列的头节点,而队尾指针指向终端节点
将对头指针front指向链队列的头结点,队尾指针rear指向终端结点。
空队列时,头指针front和尾指针rear都指向头结点。
1链队列的存储结构为:
typedef int QElemType;typedef struct QNode { //结点结构 QElemType data; struct QNode *next;}QNode;typedef struct QNode * QueuePtr;typedef struct { //队列的链表结构 QueuePtr rear; QueuePtr front;}LinkQueue;2 入队操作其实就是在链表尾部插入节点。
//插入元素e为Q的新的队尾结点Status EnQueue(QueuePtr Q, QElemType e) { QueuePtr q = (QueuePtr)malloc(sizeof(QNode)); if (!q) { //存储分配失败 exit(OVERFLOW); } q->data = e; q->next = NULL; Q->rear->next = q; Q->rear = q; return OK;}
3 出队操作
出队操作,就是头结点的后继结点出队,将头结点的后继改为它后面的结点。
若链表除头结点外只剩一个元素时,则需将rear指针指向头结点。
//若队列不空,删除Q的队头元素,用e返回其值,并返回OK,否则返回ERROR。Status DeQueue(QueuePtr Q, QElemType *e) { QueuePtr q; if (Q->rear == Q->front) { //空队列 return ERROR; } q = Q->front->next; //q指向第一个结点 *e = q->data; Q->front->next = q->next; if (Q->rear == q) { //若队头就是队尾,删除后,需要将rear指针指向头结点 Q->rear = Q->front; } free(q); return OK;}
0 0
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 队列的链式存储结构
- 数据结构(队列):队列的链式存储结构
- 队列的链式存储结构与操作
- 队列的链式存储结构与操作
- 数据结构:队列的链式存储结构
- 【数据结构基础】队列的链式存储结构
- 队列的链式存储结构C++实现
- 【十三】队列的链式存储结构
- 数据结构:队列的链式存储结构
- 队列的链式存储结构及实现
- Ubuntu更改开机启动顺序
- 《ACM程序设计》书中题目L 第十二题 反转输出
- java获取指定包下面的类名称
- csapp 浮点数
- AS集成科大讯飞SDK实现问答机器人的效果
- 队列的链式存储结构
- RPG开发日记
- TensorFlow: couldn’t open CUDA library cupti64_80.dll、InternalError: Blas SGEMM launch failed
- [数据结构和算法]选择排序
- C语言三天打鱼两天晒网
- gulp启动报错找不到模块
- 你应该知道的一些事情——CSS权重
- 牛客网编程题之小米Git
- spring知识八------事务管理