设链表结点结构已经给出,试编写链表插入函数Insert将实现链表末尾添加数据,再编写函数Print,实现链表中链表数据打印,编写Destroy函数,实现链表的销毁释放,只使用一级指针,并在main函数中写出完整的调用过程。
时间: 2023-07-11 14:30:32 浏览: 98
好的,以下是代码实现:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表结点结构
typedef struct node {
int data; // 数据域
struct node *next; // 指针域
} Node, *LinkList;
// 链表插入函数,实现在链表末尾添加数据
void Insert(LinkList *L, int value) {
Node *p = (Node*)malloc(sizeof(Node)); // 创建新结点
p->data = value;
p->next = NULL;
if (*L == NULL) { // 空链表,插入第一个结点
*L = p;
} else { // 非空链表,在尾部插入结点
Node *q = *L;
while (q->next) {
q = q->next;
}
q->next = p;
}
}
// 链表打印函数,实现打印链表中的数据
void Print(LinkList L) {
Node *p = L;
while (p) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
// 链表销毁函数,实现释放链表中所有结点内存
void Destroy(LinkList *L) {
Node *p = *L;
while (p) {
Node *q = p;
p = p->next;
free(q);
}
*L = NULL;
}
int main() {
LinkList L = NULL; // 初始化空链表
Insert(&L, 1);
Insert(&L, 2);
Insert(&L, 3);
printf("链表中的数据为:");
Print(L);
Destroy(&L); // 销毁链表
return 0;
}
```
在主函数中,我们初始化了一个空链表L,然后调用Insert函数向其中插入了3个数据:1、2和3。接着调用Print函数打印链表中的数据,最后调用Destroy函数销毁链表,释放内存。
输出结果为:
```
链表中的数据为:1 2 3
```
阅读全文