阅读量: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函数释放每个节点的内存,最后再将头节点的内存释放掉。