队列及队列的线性存储

一、队列的基本概念

        概念:队列是一种先进先出的数据结构,他有两个开口

        特点:队列容器允许从一端新增元素 从另一端移除元素

        队列中只有队头和队尾才可以被外界使用,因此队列不允许有遍历行为

        队列中进数据称为---入队               push 

        队列中出数据称为---出队                pop

        队列属于受限线性表

        如图所示: 

 二、队列的顺序存储

        概念:

                所谓队列的顺序存储,即利用数组模拟出队列的先进先出的数据结构。

        思考:

                如何用代码设计存储队列容器,可以存放整型数据,并满足队列的特性?

        入队出队参考代码:

#define MAX 1000
//队列的结构体
typedef struct Queue{
    int data[MAX];       //队列内部真实的结构、数组模拟
    int size;            //队列的大小
}Queue,*seqQueue;

//初始化队列
seqQueue init_seqQueue(){
    //分配内存空间
    seqQueue queue = (Queue *)malloc(sizeof(struct Queue));
    
    if(queue == NULL){
        return NULL;
    }
    //初始化队列大小
    queue->size = 0;
    //清空队列中所有元素
    for(int i = 0;i < MAX; i++){
        queue->data[i] = 0;
    }
    return queue;
}

//入队
void push_seqQueue(seqQueue queue,int data){
    //本质   尾插
    if(queue == NULL){
        return;
    }
    if (queue->size == max){
        printf("队满,无法入队\n");
        return;
    }
    
    queue->data[queue->size] = data;
    //更新队列大小
    queue->size++;
}

//出队
void pop_seqQueue (seqQueue queue){
    //本质  头删
    if(queue == NULL){
        return;
    }
    if(queue->size == 0){
        printf("队列已空,无法出队!\n");
        return;
    }
    for(int i=0;i<queue->size-1;i++){
        queue -> data[i] = queue->data[i+1];
        
    }
    //更新队列大小
    queue->size++;

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值