c语言队列数据结构数组和链表
队列是一种常见的数据结构,它遵循先进先出(FIFO)的原则。在C语言中,我们可以使用数组或链表来实现队列数据结构。本文将介绍C语言中队列的实现方法及其应用。
一、数组实现队列
数组是一种简单且常用的数据结构,可以用来实现队列。在C语言中,我们可以使用数组来创建一个固定大小的队列。下面是一个使用数组实现队列的示例代码:
```c
#include <stdio.h>
#define MAX_SIZE 100
int queue[MAX_SIZE];
int front = -1;
int rear = -1;
void enqueue(int data) {
    if (rear == MAX_SIZE - 1) {
        printf("队列已满,无法插入元素。\n");
        return;
    }
    if (front == -1) {
        front = 0;
    }
    rear++;
    queue[rear] = data;
}
void dequeue() {
    if (front == -1 || front > rear) {
        printf("队列为空,无法删除元素。\n");
        return;
    }
    front++;
}
int getFront() {
    if (front == -1 || front > rear) {
        printf("队列为空。\n");
        return -1;
    }
    return queue[front];
}
int isEmpty() {
    if (front == -1 || front > rear) {
        return 1;
    }
    return 0;
}
int main() {
    enqueue(1);
    enqueue(2);
    enqueue(3);
    printf("队列的第一个元素:%d\n", getFront());
    dequeue();
    printf("队列的第一个元素:%d\n", getFront());
    return 0;
}
```
在上述代码中,我们使用了一个数组`queue`来存储队列的元素。`front`和`rear`分别表示队列的前端和后端的索引。`enqueue`函数用于向队列中插入元素,`dequeue`函数用于删除队
列中的元素,`getFront`函数用于获取队列的第一个元素,`isEmpty`函数用于判断队列是否为空。
二、链表实现队列
链表是另一种常见的数据结构,也可以用来实现队列。在C语言中,我们可以使用指针来创建一个链表队列。下面是一个使用链表实现队列的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
    int data;
    struct Node* next;
} Node;
Node* front = NULL;
Node* rear = NULL;
void enqueue(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;
    if (rear == NULL) {
        front = rear = newNode;
        return;
    }
    rear->next = newNode;
    rear = newNode;
}
void dequeue() {
    if (front == NULL) {
        printf("队列为空,无法删除元素。\n");

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。