C队列 数组实现

本文详细介绍了使用C++实现长度为10的队列数组,包括队列的初始化、判断空、获取队首队尾元素、入队、出队、清空等基本操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//  visual studio 2012 
//  一个长度为10的队列的数组实现操作
//  对应C++中的操作函数 入队push(),出队pop(), 读取队首元素front(),读取队尾元素back() 
//  判断队是否有元素empty(),求队列元素个数size()

#include "stdafx.h"
#include "iostream"
#include "stdio.h"

typedef struct
{
int len;
int values[10];
}Queue;

void Queue_Initial(Queue *data)
{
data->len = 0;
}

int Queue_Empty(Queue *data)
{
return data->len == 0 ? 1 : 0;
}

int Queue_Front(Queue *data)
{
if(data->len <= 0) {
return -1;
}
return data->values[0];
}

int Queue_Back(Queue *data)
{
if(data->len <= 0){
return -1;
}
return data->values[data->len - 1];
}

void Queue_Push(Queue *data, int value)
{
if(data->len >= 10) {
return;
}
data->values[data->len++] = value;
}

void Queue_Pop(Queue *data)
{
int i;
if(data->len <= 0) {
return;
}
for(i = 1; i < data->len; i++){
data->values[i - 1] = data->values[i];
}
data->len--;
}

void Queue_Clear(Queue *data)
{
data->len = 0;
}

int _tmain(int argc, _TCHAR* argv[])
{
Queue test_data1 = {0,{0}};

Queue_Initial(&test_data1);

for (int i = 0; i < 10; i++) {
Queue_Push(&test_data1,i);
}
int temp = Queue_Front(&test_data1);
temp = Queue_Back(&test_data1);
for (int i = 0; i < 10; i++) {
Queue_Pop(&test_data1);
}
while (1);
return 0;
}

队列是一种典型的先进先出(FIFO,First In First Out)的数据结构,在C语言中可以利用数组轻松地实现一个简单的队列。下面是一个基于数组实现的简单队列示例: ### 示例代码 ```c #include <stdio.h> #define MAX_SIZE 5 // 定义队列的最大容量 // 队列结构体定义 typedef struct { int items[MAX_SIZE]; // 存储数据的数组 int front; // 指向队首元素的位置 int rear; // 指向队尾下一个插入位置 } Queue; // 初始化队列函数 void initialize(Queue *q) { q->front = -1; q->rear = -1; } // 判断队列是否为空 int is_empty(Queue *q) { return (q->front == -1); } // 判断队列是否已满 int is_full(Queue *q) { return ((q->rear + 1) % MAX_SIZE == q->front); } // 入队操作(添加元素) void enqueue(Queue *q, int element) { if (is_full(q)) { printf("Error: 队列已满\n"); } else { if (q->front == -1) q->front = 0; q->rear = (q->rear + 1) % MAX_SIZE; q->items[q->rear] = element; printf("%d 已加入队列。\n", element); } } // 出队操作(移除并返回队首元素) int dequeue(Queue *q) { int item = -1; if (is_empty(q)) printf("Error: 队列为空\n"); else { item = q->items[q->front]; if (q->front == q->rear) { // 如果只有一个元素,则清空队列 q->front = -1; q->rear = -1; } else { q->front = (q->front + 1) % MAX_SIZE; } printf("%d 已从队列删除。\n", item); } return item; } // 打印当前队列内容 void display(Queue *q) { if (is_empty(q)) { printf("Queue is empty.\n"); return; } int i = q->front; while(1){ printf("%d ", q->items[i]); if(i == q->rear) break; i=(i+1)%MAX_SIZE; } printf("\n"); } // 主程序演示队列功能 int main() { Queue queue; initialize(&queue); enqueue(&queue, 10); // 插入元素到队列 enqueue(&queue, 20); enqueue(&queue, 30); enqueue(&queue, 40); enqueue(&queue, 50); enqueue(&queue, 60); // 尝试超过最大限制 display(&queue); // 显示队列状态 dequeue(&queue); // 删除队头元素 dequeue(&queue); display(&queue); enqueue(&queue, 70); // 再次尝试插入新元素 display(&queue); return 0; } ``` 在这个例子中我们定义了一个名为`Queue`的结构体用于保存队列的基本信息,并实现了初始化、判空、判满、入队以及出队等基本的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值