当前位置:主页 > 查看内容

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

发布时间:2021-06-05 00:00| 位朋友查看

简介:队列的链式存储结构,其实就是线性表的单链表,只不过它只能尾进头出而已,通常简称为链队列。为了操作上的方便,将队头指针指向链队列的头结点,队尾指针指向终端结点。 当队列为空时,front和rear都指向头结点。 链队列的结构定义如下所示: typedef int Q……

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

当队列为空时,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

链队列的出队操作:

  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; 

输出如下所示:


本文转载自网络,原文链接:https://mp.weixin.qq.com/s/7NEgUORmlXMWxS0V10BGWA
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文

  • 周排行
  • 月排行
  • 总排行

随机推荐