用C++写一个队列程序
时间: 2023-08-31 10:30:49 浏览: 128
### 回答1:
C 语言实现队列程序示例如下:
#include <stdio.h>
#define MAXQUEUE 5
typedef struct {
int front;
int rear;
int data[MAXQUEUE];
}Queue; // 初始化队列
void initQueue(Queue *queue) {
queue->front = 0;
queue->rear = 0;
} // 判断队列是否为空
int isEmpty(Queue *queue) {
if (queue->front == queue->rear) {
return 1;
} else {
return 0;
}
} // 判断队列是否已满
int isFull(Queue *queue) {
if (queue->front == (queue->rear + 1) % MAXQUEUE) {
return 1;
} else {
return 0;
}
} // 入队
void enQueue(Queue *queue, int data) {
if (isFull(queue) == 1) {
printf("queue is full!\n");
} else {
queue->data[queue->rear] = data;
queue->rear = (queue->rear + 1) % MAXQUEUE;
}
} // 出队
int deQueue(Queue *queue) {
int returnData;
if (isEmpty(queue) == 1) {
printf("queue is empty!\n");
} else {
returnData = queue->data[queue->front];
queue->front = (queue->front + 1) % MAXQUEUE;
return returnData;
}
return 0;
} int main(void) {
Queue queue;
initQueue(&queue);
int num;
printf("Input num : ");
scanf("%d", &num);
while (num != -1) {
enQueue(&queue, num);
printf("Input num : ");
scanf("%d", &num);
}
printf("Output : ");
while (isEmpty(&queue) == 0) {
printf("%d ", deQueue(&queue));
}
printf("\n");
return 0;
}
### 回答2:
使用C语言编写一个队列程序主要分为以下步骤:
1. 定义队列的结构体:首先,我们需要定义一个队列结构体,包含队列的容量、头尾指针以及存放元素的数组。可以使用数组实现队列,其中头指针指向队列的头部,尾指针指向队列的尾部。
2. 初始化队列:在主函数中,我们需要初始化队列,即设置队列的容量和头尾指针的初始位置。可以通过动态内存分配来为队列分配所需的存储空间。
3. 入队操作:入队操作是将元素添加到队列的尾部。我们首先需要判断队列是否已满,如果已满则不允许入队;如果队列未满,则将元素添加到尾指针指向的位置,并更新尾指针。
4. 出队操作:出队操作是将队列的头部元素移出队列。我们首先需要判断队列是否为空,如果为空则不允许出队;如果队列不为空,则将头指针指向的位置的元素移出队列,并更新头指针。
5. 判断队列状态:我们可以通过判断头尾指针的位置来确定队列的状态,如队列是否为空或已满。
以下是一个简单的队列程序示例:
```c
#include <stdio.h>
#include <stdlib.h>
typedef struct {
int capacity;
int *data;
int front;
int rear;
} Queue;
void initQueue(Queue *queue, int capacity) {
queue->capacity = capacity;
queue->data = (int *)malloc(capacity * sizeof(int));
queue->front = 0;
queue->rear = -1;
}
int isFull(Queue *queue) {
return queue->rear == queue->capacity - 1;
}
int isEmpty(Queue *queue) {
return queue->rear < queue->front;
}
void enqueue(Queue *queue, int element) {
if (isFull(queue)) {
printf("Queue is full.\n");
return;
}
queue->rear++;
queue->data[queue->rear] = element;
}
void dequeue(Queue *queue) {
if (isEmpty(queue)) {
printf("Queue is empty.\n");
return;
}
printf("Dequeued element: %d\n", queue->data[queue->front]);
queue->front++;
}
int main() {
int capacity = 5;
Queue queue;
initQueue(&queue, capacity);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
dequeue(&queue);
free(queue.data);
return 0;
}
```
在这个示例中,我们通过定义一个Queue结构体来表示队列,使用initQueue函数进行初始化,使用enqueue函数进行入队操作,使用dequeue函数进行出队操作。其中,isFull函数和isEmpty函数分别判断队列是否满和空。以上是一个基本的队列程序示例,可以根据需求进行扩展和改进。
### 回答3:
队列是一种常见的数据结构,它遵循先进先出(First In First Out,FIFO)的原则。我们可以用C语言编写一个队列程序。
首先,我们需要定义一个队列的结构体,包含队列的大小、首尾指针以及一个储存数据的数组。例如:
```
typedef struct {
int size;
int front;
int rear;
int *data;
} Queue;
```
接下来,我们可以创建一个函数来初始化队列,并根据给定的大小动态分配数组的内存空间。例如:
```
void initQueue(Queue *queue, int size) {
queue->size = size;
queue->front = 0; // 头指针初始化为0
queue->rear = -1; // 尾指针初始化为-1
queue->data = (int*) malloc(size * sizeof(int));
}
```
然后,我们可以实现入队和出队的操作。入队操作将元素添加到队列的尾部,而出队操作将元素从队列的头部移除。例如:
```
void enqueue(Queue *queue, int item) {
if (queue->rear == queue->size - 1) {
printf("队列已满,无法入队。\n");
} else {
queue->rear++;
queue->data[queue->rear] = item;
}
}
int dequeue(Queue *queue) {
if (queue->front > queue->rear) {
printf("队列为空,无法出队。\n");
return -1;
} else {
int item = queue->data[queue->front];
queue->front++;
return item;
}
}
```
最后,我们需要在主函数中使用以上函数来操作队列。例如:
```
int main() {
Queue queue;
int size = 5; // 假设队列大小为5
initQueue(&queue, size);
enqueue(&queue, 1);
enqueue(&queue, 2);
enqueue(&queue, 3);
int item = dequeue(&queue);
printf("出队元素:%d\n", item);
return 0;
}
```
以上就是用C语言编写一个队列程序的基本步骤。需要注意的是,在实际应用中,我们可能还需要考虑队列空和队列满的情况,并做相应的处理。
希望以上回答对您有所帮助!
阅读全文