C语言malloc创建链表怎么实现

avatar
作者
筋斗云
阅读量:2

创建链表可以通过malloc函数来分配内存,并且通过指针来进行节点之间的连接。下面是一个使用malloc函数创建链表的实例:

#include <stdio.h> #include <stdlib.h>  // 定义链表节点结构 typedef struct Node {     int data;     struct Node* next; } Node;  // 创建链表函数 Node* createList(int n) {     Node* head = NULL;     Node* temp = NULL;     Node* p = NULL;     int i;      for (i = 0; i < n; i++) {         temp = (Node*)malloc(sizeof(Node)); // 分配节点内存         printf("输入第 %d 个节点的值: ", i+1);         scanf("%d", &temp->data);         temp->next = NULL;          if (head == NULL) {             head = temp;         } else {             p = head;             while (p->next != NULL) {                 p = p->next;             }             p->next = temp;         }     }      return head; }  // 打印链表函数 void printList(Node* head) {     Node* p = head;      printf("链表的值为: ");     while (p != NULL) {         printf("%d ", p->data);         p = p->next;     }     printf("\n"); }  int main() {     int n;     Node* head = NULL;      printf("输入链表的节点个数: ");     scanf("%d", &n);      head = createList(n);     printList(head);      return 0; } 

以上代码首先定义了一个Node结构体,包含一个整型数据和一个指向下一个节点的指针。然后通过createList函数使用malloc动态分配内存来创建链表,并通过指针将各个节点连接起来。最后通过printList函数打印链表的值。

在main函数中,首先输入链表的节点个数,然后调用createList函数创建链表,并通过printList函数打印链表的值。

注意,使用malloc创建链表后,需要在不需要链表时,手动释放内存,避免内存泄漏。可以通过循环遍历链表,使用free函数释放每个节点的内存,最后再将头节点的内存释放掉。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!