队列入队出队操作

front:对头下标

rear:队尾下标

入队:cntl->rear++

出队:cntl->front++

队满:(cntl->rear+1)%cntl->size==cntl->front

对空:cntl->rear==cntl->front

#include<stdio.h>
#include<stdlib.h>
#include<string.h>

typedef int Datatype;

//设计队列
typedef struct Queue
{
   
   int size;//队长
   Datatype *ptr;//队入口地址
   int front;//对头下标
   int rear;//对尾下标
}Queue,*P_Queue;
P_Queue IntiQueue(int Size)
{
    P_Queue cntl=calloc(1,sizeof(Queue));

    if(cntl==NULL)
    {
        printf("申请空间失败\n");
        exit(0);
    }
    cntl->rear=cntl->front=0;
    cntl->size=Size;
    cntl->ptr=calloc(Size,sizeof(Datatype));

    return cntl;
}
int enQueue(P_Queue cntl,Datatype *data)
{
    if((cntl->rear+1)%cntl->size==cntl->front)
    {
        printf("队列已经满\n");
        return -1;
    }
    cntl->rear++;
    memcpy(cntl->ptr+cntl->rear,data,sizeof(Datatype));
    printf("入队data:%d\n",*data);
}
int outQueue(P_Queue cntl,Datatype *data)
{
    if(cntl->rear==cntl->front)
    {
        printf("队列为空\n");
        exit(0);
    }
    cntl->front=(cntl->front+1)%cntl->size;
    memcpy(data,cntl->ptr+cntl->front,sizeof(Datatype));
    printf("出队data:%d\n" , *data);
}
int main(int argc, char const *argv[])
{
    P_Queue cntl=IntiQueue(20);
    int data=1;
    for (int i = 0; i <5; i++)
    {
        //添加数据
        enQueue(cntl,&data);
        data=data+2;
    }
    for (int i = 0; i < 8; i++)
    {
        outQueue( cntl , &data);
    }
    

    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值