上一篇
在学习数据结构的过程中,队列是一种非常基础且重要的线性结构。它遵循“先进先出”(FIFO, First In First Out)的原则,就像排队买票一样:先来的人先被服务。本教程将带你一步步用C语言顺序队列的方式实现一个完整的队列,并解释每一步的原理,即使你是编程小白也能轻松上手!
顺序队列是使用数组来存储队列元素的一种实现方式。它有两个关键指针:
一个完整的顺序队列通常需要支持以下操作:
下面是一个完整的、带注释的C语言顺序队列实现:
// queue.h - 顺序队列头文件#define MAX_SIZE 100typedef struct { int data[MAX_SIZE]; int front; int rear;} SeqQueue;void initQueue(SeqQueue* q);int isFull(SeqQueue* q);int isEmpty(SeqQueue* q);int enqueue(SeqQueue* q, int value);int dequeue(SeqQueue* q, int* value);int getFront(SeqQueue* q, int* value);
// queue.c - 顺序队列实现文件#include <stdio.h>#include "queue.h"void initQueue(SeqQueue* q) { q->front = 0; q->rear = 0;}int isFull(SeqQueue* q) { return (q->rear == MAX_SIZE);}int isEmpty(SeqQueue* q) { return (q->front == q->rear);}int enqueue(SeqQueue* q, int value) { if (isFull(q)) { printf("队列已满,无法入队!\n"); return 0; } q->data[q->rear] = value; q->rear++; return 1;}int dequeue(SeqQueue* q, int* value) { if (isEmpty(q)) { printf("队列为空,无法出队!\n"); return 0; } *value = q->data[q->front]; q->front++; return 1;}int getFront(SeqQueue* q, int* value) { if (isEmpty(q)) { printf("队列为空!\n"); return 0; } *value = q->data[q->front]; return 1;}
// main.c - 测试程序#include <stdio.h>#include "queue.h"int main() { SeqQueue q; initQueue(&q); enqueue(&q, 10); enqueue(&q, 20); enqueue(&q, 30); int val; while (!isEmpty(&q)) { dequeue(&q, &val); printf("出队元素:%d\n", val); } return 0;}
上述代码实现了标准的C语言顺序队列。注意以下几点:
front = rear = 0,表示队列为空。rear 位置,然后 rear++。front 位置的元素,然后 front++。通过本教程,你已经掌握了如何用C语言实现一个基本的顺序队列。这是学习更高级数据结构(如循环队列、链式队列)的基础。希望这篇C语言教程能帮助你打下坚实的数据结构基础!
关键词回顾:C语言顺序队列、顺序队列实现、队列数据结构、C语言教程
本文由主机测评网于2025-12-12发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/2025126796.html