c语言利用链表实现七巧板
时间: 2023-07-12 12:03:11 浏览: 121
关于链表的c语言实现
使用链表实现七巧板需要以下步骤:
1. 定义结构体来表示七巧板的形状,其中包括形状的名称、形状的大小、形状的坐标等信息。
2. 定义链表节点结构体,其中包括一个指向七巧板形状结构体的指针和一个指向下一节点的指针。
3. 定义链表的头节点和尾节点,并初始化为空。
4. 实现向链表中添加七巧板的函数,该函数需要先创建一个新的链表节点,然后将七巧板形状结构体指针赋值给该节点,最后将该节点添加到链表尾部。
5. 实现从链表中删除指定七巧板的函数,该函数需要遍历整个链表,找到指定名称的七巧板节点,然后删除该节点。
6. 实现遍历整个链表并输出七巧板信息的函数,该函数需要遍历整个链表,输出每个七巧板节点中的信息。
下面是一个简单的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 七巧板形状结构体
struct Tangram {
char name[20]; // 形状名称
int size; // 形状大小
int x; // 形状坐标
int y;
};
// 链表节点结构体
struct Node {
struct Tangram *tangram; // 指向七巧板的指针
struct Node *next; // 指向下一节点的指针
};
// 链表头节点和尾节点
struct Node *head = NULL;
struct Node *tail = NULL;
// 向链表中添加七巧板
void addTangram(char *name, int size, int x, int y) {
// 创建新的节点
struct Node *newNode = (struct Node*)malloc(sizeof(struct Node));
newNode->tangram = (struct Tangram*)malloc(sizeof(struct Tangram));
strcpy(newNode->tangram->name, name);
newNode->tangram->size = size;
newNode->tangram->x = x;
newNode->tangram->y = y;
newNode->next = NULL;
// 将节点添加到链表尾部
if (head == NULL) {
head = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
// 从链表中删除指定名称的七巧板
void deleteTangram(char *name) {
struct Node *curr = head;
struct Node *prev = NULL;
// 遍历整个链表,找到指定名称的节点
while (curr != NULL) {
if (strcmp(curr->tangram->name, name) == 0) {
// 找到了节点,删除它
if (prev == NULL) {
// 要删除的是头节点
head = curr->next;
} else {
prev->next = curr->next;
}
free(curr->tangram);
free(curr);
return;
}
prev = curr;
curr = curr->next;
}
// 没有找到指定名称的节点
printf("No such tangram.\n");
}
// 输出链表中所有七巧板的信息
void printTangramList() {
struct Node *curr = head;
while (curr != NULL) {
printf("Name: %s, Size: %d, X: %d, Y: %d\n", curr->tangram->name, curr->tangram->size, curr->tangram->x, curr->tangram->y);
curr = curr->next;
}
}
int main() {
// 添加几个七巧板
addTangram("Parallelogram", 4, 0, 0);
addTangram("Square", 2, 4, 0);
addTangram("Triangle", 3, 0, 4);
// 输出所有七巧板的信息
printTangramList();
// 删除一个七巧板
deleteTangram("Square");
// 输出剩余七巧板的信息
printTangramList();
return 0;
}
```
阅读全文