C++C语言队列

一、队列概念。

队列是限定在一端进行插入,另一端进行删除的特殊线性表。就像排队买东西,排在前面的人买完东西后离开队伍(删除),而后来的人总是排在队伍末尾(插入)。通常把队列的插入和删除分别称为入队和出队。允许出队的一端称为队首,允许入队的一端称为队尾。也就是先进先出,FIFO(First In First Out)

二、队列的操作。

入队(插入)

入队简单来说就是把队尾往后移一个,在对位的位置插入一个数。

例如我们要插入5,就把队尾往后移一个,插进来:

出队(删除)

出队简单来讲就是把队首往后移一个,删除之前的队首。

例如我们要把1出队(删除),那么出队完就变成了这样,如下表:

再出队3:

三、队列的创建和函数引用。

#include <queue> // 引入头文件 优先队列 priority_queue 也在这个头文件里
queue<int> q; //定义int类型queue并命名为q
//格式:queue<变量类型> 变量名
函数名含义
q.push(x)
将x入队到队尾
q.pop()
将队首元素出队
q.front()
返回队首元素
q.back()
返回队尾元素
q.size()
返回队列的元素个数
q.empty()
q是否为空容器,若空则返回true
q1.swap(q2)
交换q1与q2,等效写法为:swap(q1, q2)
q1 = q2
将q2的内容赋值给q1

作者10岁的小Tyler

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C语言中可以使用标准库中的priority_queue来实现优先队列。在C语言中,可以使用以下代码来实现一个优先队列: ```c #include <stdio.h> #include <stdlib.h> typedef struct { int priority; // 其他需要存储的数据 } Element; typedef struct { Element *elements; int size; int capacity; } PriorityQueue; PriorityQueue* createPriorityQueue(int capacity) { PriorityQueue *queue = (PriorityQueue*)malloc(sizeof(PriorityQueue)); queue->elements = (Element*)malloc(capacity * sizeof(Element)); queue->size = 0; queue->capacity = capacity; return queue; } void enqueue(PriorityQueue *queue, int priority) { if (queue->size == queue->capacity) { // 队列已满,需要扩容 queue->capacity *= 2; queue->elements = (Element*)realloc(queue->elements, queue->capacity * sizeof(Element)); } Element element; element.priority = priority; // 其他需要存储的数据 queue->elements[queue->size++] = element; } int dequeue(PriorityQueue *queue) { if (queue->size == 0) { // 队列为空 return -1; } int minIndex = 0; for (int i = 1; i < queue->size; i++) { if (queue->elements[i].priority < queue->elements[minIndex].priority) { minIndex = i; } } int minValue = queue->elements[minIndex].priority; // 其他需要处理的数据 queue->elements[minIndex] = queue->elements[--queue->size]; return minValue; } void destroyPriorityQueue(PriorityQueue *queue) { free(queue->elements); free(queue); } int main() { PriorityQueue *queue = createPriorityQueue(10); for (int i = 0; i < 10; i++) { int temp; scanf("%d", &temp); enqueue(queue, temp); } while (queue->size > 0) { int value = dequeue(queue); printf("%d\n", value); } destroyPriorityQueue(queue); return 0; } ``` 这段代码使用了一个结构体PriorityQueue来表示优先队列,其中的Element结构体可以根据实际需要存储其他数据。enqueue函数用于将元素插入队列,dequeue函数用于从队列中取出优先级最高的元素。在main函数中,我们可以通过循环输入10个元素,并按照优先级从小到大输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值