创建链表可以通过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函数释放每个节点的内存,最后再将头节点的内存释放掉。