C语言单链表创建函数实现:CreateListF详解
C语言单链表创建函数实现:CreateListF详解
本题要求建立单链表。例如,对于给出的输入数据'1 2 3 4',建立的单链表如下图所示:

请补充正确的代码。
typedef int ElemType;
typedef struct LNode
{
ElemType data;
struct LNode *next;
} LinkNode;
void CreateListF(LinkNode *&L, ElemType a[], int n)
{
LinkNode *s;
int i;
L = (LinkNode *)malloc(sizeof(LinkNode));
L->next = NULL;
for (i = 0; i < n; i++)
{
s = (LinkNode *)malloc(sizeof(LinkNode));
s->data = a[i];
s->next = L->next;
L->next = s;
}
}
代码解析:
-
函数定义:
void CreateListF(LinkNode *&L, ElemType a[], int n)L: 指向头结点的指针,用引用传递,以便在函数内部修改头结点的值。a[]: 待插入的元素数组。n: 元素数组的长度。
-
创建头结点:
L = (LinkNode *)malloc(sizeof(LinkNode));- 使用
malloc函数动态分配一个LinkNode结构体大小的内存空间,并将地址赋给L。 - 初始化头结点的
next指针为NULL,表示链表为空。
- 使用
-
循环插入节点:
for (i = 0; i < n; i++)- 循环遍历
a[]数组中的每个元素。 - 为每个元素创建一个新的节点:
s = (LinkNode *)malloc(sizeof(LinkNode)); - 将元素的值赋给新节点的数据域:
s->data = a[i]; - 将新节点插入到链表头部:
s->next = L->next;将新节点的next指针指向原链表的头结点。L->next = s;将头结点的next指针指向新节点。
- 循环遍历
总结:
该代码实现了单链表的创建函数 CreateListF,函数通过循环遍历数组,依次创建新的节点并插入到链表头部,最终生成一个包含所有数组元素的单链表。
原文地址: https://www.cveoy.top/t/topic/iisE 著作权归作者所有。请勿转载和采集!