队列的基本操作

队列的基本操作

队列是一种常见的数据结构,类似于现实生活中的排队概念。它按照先进先出(FIFO)的原则管理元素。在队列中,新元素从一端(通常称为队尾)添加,而现有元素从另一端(通常称为队首)移除。这意味着最先进入队列的元素最先被移出,保持了元素的顺序性。

队列的基本操作包括以下几种:

入队(enqueue): 将元素添加到队列的末尾(队尾)。
出队(dequeue): 从队列的开头(队首)移除并返回元素。
查看队首元素(peek): 查看队列开头处的元素,但不移除它。
判空(isEmpty): 检查队列是否为空。
获取队列长度(size): 返回队列中元素的数量。

这些基本操作使得可以有效地管理和操作队列中的元素,维护队列的顺序性,并允许对数据按照 FIFO 原则进行处理。

代码实现

//队列的基本操作
#include<stdio.h>
#include<stdlib.h>

#define MAX_SIZE 100  //定义队列的最大容量

typedef struct{
    int data[MAX_SIZE];
    int front;
    int rear;
}Queue;

//创建队列
Queue*createQueue(){
    Queue*q=(Queue*)malloc(sizeof(Queue));
    q->front=-1;
    q->rear=-1;
    return q;
}


//销毁队列
void destroyQueue(Queue*q){
    free(q);
}

//清空队列
void clearQueue(Queue*q){
    q->front=-1;
    q->rear=-1;
}

//求队列长度
int queueLength(Queue*q){
    return (q->rear-q->front+1);
}


//返回对头元素
int getFront(Queue*q){
    if(q->front==-1){
        printf("队列为空\n");
        return -1;
    }
    return q->data[q->front];
}


//插入元素到对尾
void enqueue(Queue*q,int element){
    if(q->rear==MAX_SIZE-1){
        printf("队列已满\n");
        return ;
    }
    if(q->front==-1){
        q->front=0;
    }
    q->rear++;
    q->data[q->rear]=element;
}

//删除对头元素
void dequeue(Queue*q){
    if(q->front==-1){
        printf("对头为空\n");
        return ;
    }
    if(q->front==q->rear){
        q->front=-1;
        q->rear=-1;
    }
    else{
        q->front++;
    }
}



//将队列置空
void makeEmpty(Queue*q){
    q->front=-1;
    q->rear=-1;
}


//遍历队列
void traverseQueue(Queue*q){
    if(q->front==-1){
        printf("队列为空\n");
        return ;
    }
    for(int i=q->front;i<=q->rear;i++){
        printf("%d ",q->data[i]);
    }
    printf("\n");

}

//示例用法
int main(){
    Queue*myQueue=createQueue();

    enqueue(myQueue,10);
    enqueue(myQueue,20);
    enqueue(myQueue,30);
    enqueue(myQueue,40);

    printf("队列长度为:%d\n",queueLength(myQueue));
    printf("队头元素: %d\n",getFront(myQueue));

    dequeue(myQueue);
    printf("删除对头后的队列长度:%d\n",queueLength(myQueue));

    traverseQueue(myQueue);
    makeEmpty(myQueue);
    traverseQueue(myQueue);
    destroyQueue(myQueue);
    return 0;

}

运行效果

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值