C语言创建链表: 从数组到带头指针的单链表
C语言创建链表: 从数组到带头指针的单链表
本文将介绍如何使用C语言, 将一个数组转换为带有头指针的单链表。
问题描述
给定一个数组, 编写一个函数 create_list, 该函数接收数组指针和数组大小作为参数, 返回创建好的带头指针的单链表。
代码实现
以下是使用C语言编写的代码实现:c#include <stdio.h>#include <stdlib.h>
typedef struct __NODE { int value; struct __NODE* next;} NODE;
NODE* create_list(int* data, int size) { NODE* head = (NODE*)malloc(sizeof(NODE)); head->next = NULL; // 头指针不存放数据, 所以置为NULL NODE* current = head; // 当前节点指针 for (int i = 0; i < size; i++) { NODE* new_node = (NODE*)malloc(sizeof(NODE)); new_node->value = data[i]; new_node->next = NULL; current->next = new_node; current = new_node; } return head;}
int main() { int data[] = {1, 2, 3, 4, 5}; int size = sizeof(data) / sizeof(int); NODE* head = create_list(data, size); // 遍历链表并打印值 NODE* current = head->next; while (current != NULL) { printf('%d ', current->value); current = current->next; } printf(' '); // 释放链表占用的内存 NODE* temp; current = head; while (current != NULL) { temp = current->next; free(current); current = temp; } return 0;}
代码解释
- 首先, 我们定义了
NODE结构体, 表示链表的节点。2. 然后, 我们实现了create_list函数: * 首先, 分配头节点的内存, 并将头节点的next指针置为NULL。 * 然后, 使用for循环遍历数组中的每个元素, 创建一个新的节点, 并将其连接到链表中。 * 最后, 返回头指针。3. 在main函数中: * 定义了一个示例数组data。 * 调用create_list函数创建链表。 * 遍历链表并打印每个节点的值。 * 最后, 释放链表占用的内存。
总结
本文介绍了如何使用C语言将数组转换为带头指针的单链表, 并提供了详细的代码示例和解释。希望本文能帮助你更好地理解链表的创建过程。
原文地址: https://www.cveoy.top/t/topic/sGa 著作权归作者所有。请勿转载和采集!