c语言链表实现七巧板游戏
时间: 2023-07-12 13:04:48 浏览: 189
关于链表的c语言实现
链表可以用来存储七巧板游戏的状态。七巧板游戏是一个拼图游戏,需要将七个不同形状的木块拼成一个正方形。每个木块可以旋转和翻转,但不能重叠或悬空。
下面是一个简单的链表实现,每个节点表示一个木块的状态。每个节点包含一个指向下一个节点的指针和一个二维数组,表示该节点表示的木块的状态。
```
#include <stdio.h>
#include <stdlib.h>
#define SIZE 7
#define ROWS 3
#define COLS 3
typedef struct node {
int data[ROWS][COLS];
struct node* next;
} Node;
Node* create_node(int data[ROWS][COLS]) {
Node* node = (Node*)malloc(sizeof(Node));
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
node->data[i][j] = data[i][j];
}
}
node->next = NULL;
return node;
}
void add_node(Node** head, Node* node) {
if (*head == NULL) {
*head = node;
} else {
Node* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = node;
}
}
void print_node(Node* node) {
for (int i = 0; i < ROWS; i++) {
for (int j = 0; j < COLS; j++) {
printf("%d ", node->data[i][j]);
}
printf("\n");
}
}
void print_list(Node* head) {
Node* current = head;
while (current != NULL) {
print_node(current);
current = current->next;
}
}
int main() {
// 创建链表
Node* head = NULL;
// 添加节点
int data1[ROWS][COLS] = {{1, 1, 1}, {1, 0, 0}, {1, 0, 0}};
int data2[ROWS][COLS] = {{0, 1, 0}, {0, 1, 0}, {1, 1, 1}};
int data3[ROWS][COLS] = {{1, 0, 0}, {1, 0, 0}, {1, 1, 1}};
int data4[ROWS][COLS] = {{1, 0, 0}, {1, 1, 1}, {1, 0, 0}};
int data5[ROWS][COLS] = {{1, 1, 0}, {0, 1, 0}, {0, 1, 1}};
int data6[ROWS][COLS] = {{0, 0, 1}, {1, 1, 1}, {1, 0, 0}};
int data7[ROWS][COLS] = {{0, 1, 1}, {1, 1, 0}, {0, 1, 0}};
add_node(&head, create_node(data1));
add_node(&head, create_node(data2));
add_node(&head, create_node(data3));
add_node(&head, create_node(data4));
add_node(&head, create_node(data5));
add_node(&head, create_node(data6));
add_node(&head, create_node(data7));
// 打印链表
print_list(head);
return 0;
}
```
这个程序创建了一个包含 7 个节点的链表,每个节点表示一个木块的状态。可以通过添加节点和打印链表的函数来实现游戏的操作。
阅读全文