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小时内删除。
发表评论