关乎于队列的一些知识点

  • 队列的概念

队列,和栈一样,也是一种对数据的”存“和”取“有严格要求的线性存储结构

  • 队列的特点

队列就跟咱们日常排队一样的道理,从一端进,从另一端出,如图所示:

我们把进数据的一端称为”队尾“,出数据的一端称为”队头“;数据元素进队列的过程称为”入队(push)“,出队列的过程称为”出队(pop)“。

队列具有先进先出,后进后出的特点

  • 队列存储结构的实现有两种方式:顺序队列和链式队列

  • 队列的顺序存储代码

  • 队列的结构体

typedef struct Queue{
    int data[MAX];   //顺序存储 数组模拟的队列
    int size;        //队列的大小 (队列中元素个数)
}Queue,*SeqQueue;
  • 对列的初始化

SeqQueue init(){
    
    //申请队列空间,即数组空间
    SeqQueue p = (Queue *)malloc(sizeof(Queue));
    
    if(p == NULL){
        return NULL;
    }
    
    //初始化 队列大小
    p->size = 0;
    
    for(int i = 0; i < MAX; i++){
        p->data[i] = 0;
    }
    
    return p;
    
}
  • 入队

void push(SeqQueue p, int value){
    
    if(p == NULL){    //队列
        return;
    }
    
    if(p->size == MAX){
        printf("队列元素已满!\n");
        return;
    }
    
    //进队
    p->data[p->size] == value;
    
    //改变队列元素个数
    p->size++;
}
  • 出队

void pop(SeqQueue p){
    
    if(p == NULL){    //队列
        return;
    }
    
    if(p->size == 0){
        printf("队列元素已空!\n");
        return;
    }
    
    //出队   删除数组首元素
    for(int i = 0; i < p->size-1; i++){
        p->data[i]=p->data[i+1];
    }
    
    //改变队列元素个数
    p->size++;
}
  • 循环队列

  • 概念:

存储在其中的队列称为循环队列(Circular Queue)。循环队列是把顺序队列首尾相连,把存储队列元素的表从逻辑上看成一个环,成为循环队列。

//队满
front = (rear + 1)%n;        //front  头   rear  尾

//队空
front = rear;                //头指针 指向 尾指针 为空

以上呢,是关于我们队列的一些小知识!!!

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值