建立链表并销毁链表的c语言代码
时间: 2023-05-26 11:05:34 浏览: 106
下面是建立链表并销毁链表的c语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
struct ListNode {
int val;
struct ListNode* next;
};
typedef struct ListNode ListNode;
ListNode* createList(int* arr, int size) {
ListNode* head = NULL;
ListNode* prev = NULL;
for (int i = 0; i < size; i++) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->val = arr[i];
node->next = NULL;
if (prev == NULL) {
head = node;
} else {
prev->next = node;
}
prev = node;
}
return head;
}
void destroyList(ListNode* head) {
while (head != NULL) {
ListNode* temp = head;
head = head->next;
free(temp);
}
}
void printList(ListNode* head) {
while (head != NULL) {
printf("%d ", head->val);
head = head->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 3, 5, 7, 9};
int size = sizeof(arr) / sizeof(int);
ListNode* head = createList(arr, size);
printList(head);
destroyList(head);
return 0;
}
```
代码中,我们定义了一个链表节点结构体 `ListNode`,其中包含了一个值 `val` 和一个指向下一个节点的指针 `next`。然后我们实现了两个函数,一个是 `createList`,用于创建链表,它接收一个整型数组和一个数组大小,利用 malloc 函数创建节点,并按照从数组头到尾的顺序连接起来,最后返回链表头指针;另一个是 `destroyList`,用于销毁链表,它接收一个链表头指针,遍历整个链表,对每个节点调用 free 函数释放内存。在 main 函数中,我们先调用 `createList` 创建一个链表,然后打印链表并销毁链表,最后返回 0 表示运行成功。
阅读全文