前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >线性表--链队列(十二)

线性表--链队列(十二)

作者头像
花狗Fdog
发布2020-10-28 09:52:17
3300
发布2020-10-28 09:52:17
举报
文章被收录于专栏:花狗在Qt

1.介绍队列

1.队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 2.队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表。 3.与线性表一样,队列也有两种存储方式,即顺序表示和链式表示,今天这篇是链式表示法。

2.图示

在这里插入图片描述
在这里插入图片描述

用链表表示队列叫做链队列。

3.定义链队列

代码语言:javascript
复制
typedef struct Node
{
 int data;
 struct Node * next;
}Node;
typedef struct
{
 Node * front;
 Node * rear;
}LinkQueue;

4.初始化链队列

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
int InitQueue(LinkQueue * Q)
{
 Q->front = (Node *)malloc(sizeof(Node));
 if (Q->front != NULL)
 {
  Q->rear = Q->front;
  Q->front->next = NULL;
  return(true);
 }
 else
 {
  return(false);
 }
}

5.入队

在这里插入图片描述
在这里插入图片描述
代码语言:javascript
复制
int EnterQueue(LinkQueue * Q, int x)
{
 Node * NewNode;
 NewNode = (Node *)malloc(sizeof(Node));
 if (NewNode != NULL)
 {
  NewNode->data = x;
  NewNode->next = NULL;
  Q->rear->next = NewNode;
  Q->rear = NewNode;
  return(true);
 }
 else
 {
  return(false);
 }
}

6.出队

代码语言:javascript
复制
int DeleteQueue(LinkQueue * Q, int * x)
{
 Node * p; //用来存储要出的数据
 if (Q->front == Q->rear)return(false);
 p = Q->front->next;
 Q->front->next = p->next;
 if (Q->rear == p)
 {
  Q->rear = Q->front;
 }
 *x = p->data;
 free(p);
 return(true);
}

若有错误,欢迎指正批评,欢迎讨论。 每文一句:我们确实活得艰难,一要承受种种外部的压力,更要面对自己内心的困惑。在苦苦挣扎中,如果有人向你投以理解的目光,你会感到一种生命的暖意,或许仅有短暂的一瞥,就足以使我感奋不已。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/02/01 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.介绍队列
  • 2.图示
  • 3.定义链队列
  • 4.初始化链队列
  • 5.入队
  • 6.出队
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档