c语言数据结构输出栈迷宫游戏
时间: 2024-05-13 18:10:20 浏览: 108
C语言中的数据结构可以使用栈来实现迷宫游戏的输出。栈是一种后进先出(LIFO)的数据结构,可以用来保存迷宫中的路径信息。
在C语言中,可以使用数组来实现栈。下面是一个简单的示例代码,演示了如何使用栈来输出迷宫游戏的路径:
```c
#include <stdio.h>
#define MAX_SIZE 100
// 定义栈结构
typedef struct {
int x;
int y;
} Position;
Position stack[MAX_SIZE]; // 栈数组
int top = -1; // 栈顶指针
// 入栈操作
void push(Position pos) {
if (top < MAX_SIZE - 1) {
stack[++top] = pos;
}
}
// 出栈操作
Position pop() {
Position pos;
if (top >= 0) {
pos = stack[top--];
}
return pos;
}
// 判断栈是否为空
int isStackEmpty() {
return top == -1;
}
// 输出迷宫路径
void printMazePath(int maze[][5], int rows, int cols) {
Position start = {0, 0}; // 迷宫起点位置
Position end = {rows - 1, cols - 1}; // 迷宫终点位置
push(start); // 将起点入栈
while (!isStackEmpty()) {
Position current = pop(); // 弹出栈顶元素作为当前位置
// 到达终点,输出路径
if (current.x == end.x && current.y == end.y) {
printf("(%d, %d) ", current.x, current.y);
break;
}
// 向右移动
if (current.y + 1 < cols && maze[current.x][current.y + 1] == 0) {
Position next = {current.x, current.y + 1};
push(next);
}
// 向下移动
if (current.x + 1 < rows && maze[current.x + 1][current.y] == 0) {
Position next = {current.x + 1, current.y};
push(next);
}
printf("(%d, %d) ", current.x, current.y); // 输出当前位置
}
}
int main() {
int maze[5][5] = {
{0, 1, 0, 0, 0},
{0, 1, 0, 1, 0},
{0, 0, 0, 0, 0},
{0, 1, 1, 1, 0},
{0, 0, 0, 1, 0}
};
printf("迷宫路径为:");
printMazePath(maze, 5, 5);
return 0;
}
```
上述代码中,使用一个二维数组 `maze` 表示迷宫,其中 `0` 表示可通行的路径,`1` 表示墙壁。通过调用 `printMazePath` 函数,可以输出从迷宫起点到终点的路径。
阅读全文