参考课本代码,用c语言帮我完整和准确的写出以下我要求的代码:(1)队列初始化为空队列。(2)键盘输入偶数时,入队。(3)键盘输入奇数时,出队。(4)每输入一个整数,显示操作后队列中的值。(5)键盘输入0时,算法结束。注:所写代码要有良好的输入和输出提示附加题:打印杨辉三角形。
时间: 2024-10-16 17:11:28 浏览: 23
[栈及队列的操作]数据结构实验报告C语言源码
在C语言中,我们可以使用数组和索引来模拟队列的功能。这里是一个简单的实现了你所描述需求的代码:
```c
#include <stdio.h>
#define MAX_SIZE 10
int queue[MAX_SIZE]; // 定义队列
int front = -1, rear = -1; // 前面元素指针(front)和后面元素指针(rear)
// 初始化队列为空
void init_queue() {
front = rear = -1;
printf("Queue initialized as empty.\n");
}
// 入队操作
void enqueue(int value) {
if ((rear + 1) % MAX_SIZE == front) { // 队满处理
printf("Queue is full, cannot enqueue.\n");
return;
}
rear = (rear + 1) % MAX_SIZE; // 环状数组,更新后指针
queue[rear] = value;
printf("Enqueued %d.\n", value);
}
// 出队操作
int dequeue() {
if (front == -1) { // 队空处理
printf("Queue is empty, cannot dequeue.\n");
return -1; // 返回一个特殊的值表示错误
}
int value = queue[front];
front = (front + 1) % MAX_SIZE; // 更新前指针
return value;
}
// 显示队列内容
void display_queue() {
if (front == -1) {
printf("Queue is empty.\n");
} else {
for (int i = front; i != rear; i = (i + 1) % MAX_SIZE) {
printf("%d ", queue[i]);
}
printf("\n");
}
}
int main() {
init_queue();
while (1) {
int num;
printf("Enter a number (even for enqueue, odd for dequeue): ");
scanf("%d", &num);
if (num == 0) {
break;
} else if (num % 2 == 0) {
enqueue(num);
} else {
int popped_value = dequeue();
if (popped_value != -1) {
printf("Popped from the queue: %d\n", popped_value);
}
}
display_queue();
}
return 0;
}
```
附加题:打印杨辉三角形,可以使用递归或者循环实现。以下是递归版本的示例:
```c
void print_pascal_triangle(int n) {
if (n <= 0) {
return;
}
for (int i = 0; i <= n; i++) {
for (int j = 0; j < i; j++) {
printf("%d ", (i > 1 && j > 0) ? pascal_triangle(i - 1, j - 1) : 1); // 杨辉三角每个节点由上一行相邻两个节点相加得到
}
printf("\n");
}
}
// 用于递归计算杨辉三角的辅助函数,这里为了简洁只返回值
int pascal_triangle(int row, int col) {
if (col == 0 || col == row) {
return 1;
}
return pascal_triangle(row - 1, col - 1) + pascal_triangle(row - 1, col);
}
int main() {
int n;
printf("Enter the number of rows for Pascal's Triangle: ");
scanf("%d", &n);
print_pascal_triangle(n);
return 0;
}
```
阅读全文