数据结构队列

基于Dev写的C队列代码,实现了几个基本函数(入队,出队,队首,是否为空队列)。

#include<stdio.h>
#include<stdlib.h>
const int MANX = 100;
typedef int Date; 
struct que{
    Date* q;
    int l,r;
};
typedef struct que* Que;
Que creat(){
    Que p = (Que)malloc(sizeof(struct que));
    if(p!=NULL){
        p->q = (Date*)malloc(sizeof(int)*MANX);
        if(p->q!=NULL){
            printf("创建成功!!!\n");
            p->l=0;
            p->r=0;
            return p;
        }
        else{
            free(p);
            return NULL;
        }    
    }
    return NULL;
}

void push_que(Que queue,Date x){
    if((queue->r+1)%MANX == queue->l){
        printf("队列满了!!\n");
    }
    else{
    queue->q[queue->r]=x;
    queue->r=(queue->r+1) % MANX;
    //printf("000\n");
    }
}

void pop_que(Que queue){
    if(queue->l==queue->r){
        printf("空队列了!!\n");
    }
    queue->l=(queue->l+1)%MANX;
}

void frontf_que(Que queue){
    if(queue->l==queue->r){
        printf("空队列\n");
    }
    printf("%d\n",queue->q[queue->l]);
}

void empty(Que queue){
    if(queue->l==queue->r)
        printf("队列为空队列\n");
    else
        printf("不是空队列\n");    
}

int main(){
    int n;
    Que queue;
    printf("要先创建队列喔!!!!!\n");
    while(1){
        printf("******-----------******\n"); 
        printf("\t1.进队\n");
        printf("\t2.出队\n");
        printf("\t3.创建队\n");
        printf("\t4.查看是否空队\n");
        printf("\t5.查看队首元素\n");
        printf("\t1.退出请输0\n");
        printf("******-----------******\n");
        scanf("%d",&n);
        if(n==3)
                queue =creat();
        else if(n==2)
                pop_que(queue);
        else if(n==1){
                int k;
                printf("你要进队的元素\n");
                scanf("%d",&k);
                push_que(queue,k);
            }
        else if(n==4)    
                empty(queue);
        else if(n==5)
            frontf_que(queue);
         if(n==0)
            break;
    }
    printf("再见了,老铁");
    
    
    return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值