用C语言输出顺序队列的元素
时间: 2024-05-10 09:14:55 浏览: 73
假设队列的定义如下:
```c
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE]; // 存储队列元素
int front; // 队头指针
int rear; // 队尾指针
} SqQueue;
```
则输出顺序队列的元素可以使用以下代码实现:
```c
void printQueue(SqQueue q) {
int i;
printf("Queue: ");
for (i = q.front; i < q.rear; i++) {
printf("%d ", q.data[i]);
}
printf("\n");
}
```
该函数会遍历队列中从队头到队尾的所有元素,并将它们依次输出。注意,这里使用的是值传递,因此不会修改队列本身。如果要修改队列,需要将参数改为指针类型。
相关问题
C语言实现顺序队列
好的,以下是 C 语言实现顺序队列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int QueueEmpty(SqQueue q) {
return q.front == q.rear;
}
// 入队
int EnQueue(SqQueue *q, int x) {
// 判断队列是否已满
if ((q->rear + 1) % MAXSIZE == q->front) {
return 0;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return 1;
}
// 出队
int DeQueue(SqQueue *q, int *x) {
// 判断队列是否为空
if (q->front == q->rear) {
return 0;
}
*x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return 1;
}
int main() {
SqQueue q;
int i, x;
// 初始化队列
InitQueue(&q);
// 入队
for (i = 1; i <= 10; i++) {
EnQueue(&q, i);
}
// 出队
while (!QueueEmpty(q)) {
DeQueue(&q, &x);
printf("%d ", x);
}
printf("\n");
return 0;
}
```
该代码中使用了一个结构体 `SqQueue` 存储队列元素,队列的最大长度为 `MAXSIZE`。该结构体包含一个数组 `data` 用来存储队列元素,以及两个指针 `front` 和 `rear` 分别指向队头和队尾。
`InitQueue` 函数用于初始化队列,将 `front` 和 `rear` 都设置为 0。
`QueueEmpty` 函数用于判断队列是否为空,若队头指针和队尾指针相等,则说明队列为空。
`EnQueue` 函数用于入队,判断队列是否已满后,将元素插入到队尾,然后将队尾指针加 1。
`DeQueue` 函数用于出队,判断队列是否为空后,将队头元素保存到 `x` 中,然后将队头指针加 1。
在 `main` 函数中,我们先初始化队列,然后循环入队,最后循环出队并输出队列元素。
c语言实现顺序队列
好的,以下是 C 语言实现顺序队列的代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} SqQueue;
// 初始化队列
void InitQueue(SqQueue *q) {
q->front = q->rear = 0;
}
// 判断队列是否为空
int QueueEmpty(SqQueue q) {
return q.front == q.rear;
}
// 入队
int EnQueue(SqQueue *q, int x) {
// 判断队列是否已满
if ((q->rear + 1) % MAXSIZE == q->front) {
return 0;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
return 1;
}
// 出队
int DeQueue(SqQueue *q, int *x) {
// 判断队列是否为空
if (q->front == q->rear) {
return 0;
}
*x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return 1;
}
int main() {
SqQueue q;
int i, x;
// 初始化队列
InitQueue(&q);
// 入队
for (i = 1; i <= 10; i++) {
EnQueue(&q, i);
}
// 出队
while (!QueueEmpty(q)) {
DeQueue(&q, &x);
printf("%d ", x);
}
printf("\n");
return 0;
}
```
该代码中使用了一个结构体 `SqQueue` 存储队列元素,队列的最大长度为 `MAXSIZE`。该结构体包含一个数组 `data` 用来存储队列元素,以及两个指针 `front` 和 `rear` 分别指向队头和队尾。
`InitQueue` 函数用于初始化队列,将 `front` 和 `rear` 都设置为 0。
`QueueEmpty` 函数用于判断队列是否为空,若队头指针和队尾指针相等,则说明队列为空。
`EnQueue` 函数用于入队,判断队列是否已满后,将元素插入到队尾,然后将队尾指针加 1。
`DeQueue` 函数用于出队,判断队列是否为空后,将队头元素保存到 `x` 中,然后将队头指针加 1。
在 `main` 函数中,我们先初始化队列,然后循环入队,最后循环出队并输出队列元素。
阅读全文