队列的链式存储结构以及实现

存储 存储软件
队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,通常简称为链队列。为了操作上的方便,将队头指针指向链队列的头结点,队尾指针指向终端结点。

 队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,通常简称为链队列。为了操作上的方便,将队头指针指向链队列的头结点,队尾指针指向终端结点。

当队列为空时,front和rear都指向头结点。

链队列的结构定义如下所示:

  1. typedef  int QElemType; 
  2. //QNode代表队列中元素的结点 
  3. //QueuePtr指针指向当前链队列 
  4. typedef  struct QNode { 
  5.     QElemType data;     
  6.     struct QNode *next
  7. }QNode, *QueuePtr; 
  8. //定义链队列的结构 
  9. //front表示队头指针 
  10. //rear表示队尾指针 
  11. typedef  struct{ 
  12.     QueuePtr front, rear; 
  13. }LinkQueue; 

链队列的初始化:

  1. LinkQueue *InitQueue() 
  2.     LinkQueue *Q = new LinkQueue; 
  3.     Q->front = Q->rear = new QNode;     
  4.     if (!Q->front)return 0; 
  5.     Q->front->next = NULL;     
  6.     return Q; 

链队列的入队操作:

  1. //链队列的入队操作 
  2. bool EnQueue(LinkQueue *Q, QElemType e) 
  3.     QueuePtr s = new QNode;     
  4.     if (!s) 
  5.     {         
  6.         cout << "分配失败" << endl;         
  7.         return false
  8.     } 
  9.     s->data = e; 
  10.     s->next = NULL
  11.     Q->rear->next = s; 
  12.  
  13.     Q->rear = s;     
  14.     cout << e << endl;     
  15.     return true

链队列的出队操作:

[[237267]]

  1. //链队列的出队操作 
  2. bool DeQueue(LinkQueue *Q, QElemType *e) 
  3.     QueuePtr p;     
  4.     if (Q->front == Q->rear) 
  5.     {         
  6.         cout << "空队" << endl;         
  7.         return false
  8.     } 
  9.     p = Q->front->next
  10.     *e = p->data; 
  11.     Q->front->next = p->next;     
  12.     if (Q->rear == p) 
  13.     { 
  14.         Q->rear = Q->front; 
  15.     }     
  16.     cout << *e << endl;     
  17.     delete p;     
  18.     return true

主函数中测试代码如下:

  1. int main() 
  2.     LinkQueue *lq = InitQueue();     
  3.     cout << "入队的元素:" << endl;     
  4.     for (auto i = 0; i < 10; i++) 
  5.     { 
  6.         EnQueue(lq, i); 
  7.     }     
  8.     int temp = 0;     
  9.     //出队的元素 
  10.     cout << "出队的元素:" << endl;     
  11.     for (auto i = 0; i < 4; i++) 
  12.     { 
  13.         DeQueue(lq, &temp); 
  14.     }     
  15.     return 0; 

输出如下所示:

责任编辑:武晓燕 来源: 码码小虫
相关推荐

2023-10-10 13:39:53

Spring队列优化

2018-03-15 08:31:57

二叉树存储结构

2020-12-17 10:12:33

数据结构算法队列

2016-12-20 14:55:52

JavaScript链式结构序列

2009-12-28 10:42:01

MPLS技术

2009-07-01 14:37:14

JavaScript异

2021-03-01 23:31:48

队列实现栈存储

2021-03-29 08:01:20

JavaScript数据结构

2010-04-21 16:07:04

Oracle逻辑存储结

2017-08-04 13:15:59

开发者故事

2020-11-06 12:48:16

数据结构算法分析

2010-04-21 16:55:06

Oracle物理存储结

2022-08-11 08:03:43

队列

2023-12-14 12:56:00

链式调用代码

2023-10-18 17:49:58

数据结构队列结构

2010-05-10 14:16:50

Oracle树结构

2019-08-06 09:11:49

数据库数据结构操作系统

2022-11-11 07:48:56

ORM链式轮播图

2022-11-15 07:50:47

ORM链式操作删除

2021-07-16 07:57:34

Python数据结构
点赞
收藏

51CTO技术栈公众号