编写链表插入函数Insert将实现链表末尾添加数据,再编写函数Print,实现链表中链表数据打印,编写Destroy函数,实现链表的销毁释放,并在main函数中写出完整的调用过程
时间: 2023-07-11 19:48:06 浏览: 72
下面是一个简单的链表插入、打印和销毁的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表结点
struct ListNode {
int val; // 数据
struct ListNode *next; // 指向下一个结点的指针
};
// 插入函数,将数据插入到链表末尾
void Insert(struct ListNode **head, int val) {
// 新建结点
struct ListNode *node = (struct ListNode*)malloc(sizeof(struct ListNode));
node->val = val;
node->next = NULL;
// 判断链表是否为空
if (*head == NULL) {
*head = node;
return;
}
// 遍历链表,找到最后一个结点
struct ListNode *p = *head;
while (p->next != NULL) {
p = p->next;
}
// 将新结点插入到链表末尾
p->next = node;
}
// 打印函数,打印链表中所有数据
void Print(struct ListNode *head) {
printf("List: ");
struct ListNode *p = head;
while (p != NULL) {
printf("%d ", p->val);
p = p->next;
}
printf("\n");
}
// 销毁函数,释放链表中所有结点的内存
void Destroy(struct ListNode **head) {
struct ListNode *p = *head;
while (p != NULL) {
struct ListNode *next = p->next;
free(p);
p = next;
}
*head = NULL;
}
int main() {
// 初始化链表
struct ListNode *head = NULL;
// 插入数据
Insert(&head, 1);
Insert(&head, 2);
Insert(&head, 3);
// 打印链表
Print(head);
// 销毁链表
Destroy(&head);
return 0;
}
```
在这个示例中,我们定义了一个链表结点 `ListNode`,包含一个整数值 `val` 和一个指向下一个结点的指针 `next`。我们还定义了三个函数:`Insert`、`Print` 和 `Destroy`,分别用于插入数据、打印链表和销毁链表。在 `main` 函数中,我们按顺序调用了这三个函数,演示了它们的用法。
阅读全文