用C语言实现顺序队基本操作实验: 1、顺序队列的初始化。 2、元素入队操作算法实现。 3、元素出队操作算法实现。
时间: 2024-10-25 11:03:17 浏览: 27
双端队列入队出队等各种操作问题
5星 · 资源好评率100%
在C语言中,我们可以使用数组或动态内存分配(如`malloc`函数)来实现一个简单的顺序队列。这里是一个基础版本的实现:
1. **顺序队列的初始化**:
```c
#define MAX_SIZE 10 // 队列最大容量
typedef struct {
int data[MAX_SIZE]; // 存储数据的数组
int front; // 队头指针
int rear; // 队尾指针
} Queue;
Queue* create_queue() {
Queue* queue = (Queue*) malloc(sizeof(Queue));
if (!queue) {
printf("Memory allocation failed.\n");
return NULL;
}
queue->front = -1;
queue->rear = -1;
return queue;
}
```
在这里,我们创建了一个`Queue`结构体,包含一个数据数组、两个指针(front和rear分别表示队头和队尾),并初始化它们为-1,表示队列为空。
2. **元素入队(Enqueue)操作算法实现**:
```c
void enqueue(Queue* queue, int value) {
if (queue->rear == (MAX_SIZE - 1)) { // 队列已满
printf("Queue is full.\n");
return;
} else if (queue->front == -1) { // 队列为空
queue->front = 0;
}
queue->data[++queue->rear] = value;
}
```
当尝试插入元素时,如果队尾已经到达最大索引,则提示队列已满;否则更新队尾指针并添加值。
3. **元素出队(Dequeue)操作算法实现**:
```c
int dequeue(Queue* queue) {
if (queue->front == -1 || queue->front == queue->rear) { // 队列为空
printf("Queue is empty.\n");
return -1;
}
int value = queue->data[queue->front];
queue->front++;
return value;
}
```
出队操作检查队列是否为空,然后取出队头的值并递增队头指针。若队列真的为空,返回-1作为错误标识。
阅读全文