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;
    }
}

代码解析:

  1. 函数定义: void CreateListF(LinkNode *&L, ElemType a[], int n)

    • L: 指向头结点的指针,用引用传递,以便在函数内部修改头结点的值。
    • a[]: 待插入的元素数组。
    • n: 元素数组的长度。
  2. 创建头结点: L = (LinkNode *)malloc(sizeof(LinkNode));

    • 使用 malloc 函数动态分配一个 LinkNode 结构体大小的内存空间,并将地址赋给 L
    • 初始化头结点的 next 指针为 NULL,表示链表为空。
  3. 循环插入节点: 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,函数通过循环遍历数组,依次创建新的节点并插入到链表头部,最终生成一个包含所有数组元素的单链表。

C语言单链表创建函数实现:CreateListF详解

原文地址: https://www.cveoy.top/t/topic/iisE 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录