数据结构学习之队列

队列做为最常用的数据结构之队列

一,定义

           是限定在一段进行删除,在另一端进行删除的是线性表,循序删除的一头成为队头,另一插入的称为队尾

特性:先进先出(FIFO)

二,链队列

        队列的链式存储结构,实质上是带头结点的线性链表,拥有两个指针队头指针指向头结点,队尾指针指向尾结点

初始状态(队空状态):Q.front=Q.rear即头结点指向尾结点

1.//队列类型的定义 
typedef struct QNode{  //元素结点 
    QElemType data;
    struct QNode *next;
}QNode, * QueuePtr;

typedef struct{            //特殊结点 
    
    QueuePtr front;   //头指针 
    QueuePtr rear     // 尾指针 
}LinkQueue;

LinkQueue Q;

Q.front   //指向头结点
Q.rear    //指向尾结点 

2.队列的基本操作实现

(一)初始化

(二)销毁队列

(三)入队

(四)出队

(五)判断队空

(六)取队头元素

三,循环队列

即队列的顺序存储

(一)顺序队列

用一组连续的存储单元依次存储从队头到队尾的元素

(二)设两个指针

      头指针  Q.front   指向队列头元素

      尾指针  Q.rear    指向队列尾元素

(三)初始状态(空队列)

    Q.front=Q.rear=0

队列的真满和假满,也就是在顺序队列中会出现假满现象,为解决这一问题,我们使用循环队列,这也是从侧面的说明循环队列是顺序队列

循环队列中我们需要牢记的操作也是重点的有

(Q.rear+1)%max
//堆满状态
(Q.rear+1)%MAX=Q.front
//队空状态
Q.front=Q.rear 
//入队
(Q.rear+1)%MAX 
//出队 
(Q.front+1)%MAX 
//最多元素
MAX-1    
//当前队列存储的实际元素 
(Q.rear-Q.front+MAX)%MAX 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值