队列的基础知识

一、队列的特点

先进先出 后进后出

 由下面的图可以看出队列的特点

 二、队列的顺序存储

顺序队列是队列顺序存储结构,顺序队列实际上是运算受限的顺序表。和顺序表一样,顺序队列用一个向量空间来存放当前队列中的元素。由于队列的队头和队尾的位置是变化的,设置两个指针front和rear分别指示队头元素和队尾元素在向量空间中的位置,它们的初值在队列初始化时均应设置为0。

 三、队列的基础代码

(1)队列的结构体

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

(2)队列的初始化(数组头做队头,数组尾做队尾)

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;
}

(3)入队

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

队列的入队可以由下图可以看的出 

(4)出队

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

注意:要记得,看到循环里边有i+1的时候,要改变 最终值

队列的出栈可以由下图看出

 

四、队列示意图

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值