C语言单链表头插法创建链表 - 使用函数实现

本文将详细讲解使用 C 语言单链表头插法创建链表,并提供完整的代码示例,其中包含使用函数实现链表的创建和打印功能。

代码示例

#include <stdio.h>
#include <stdlib.h>

// 定义链表节点结构体
typedef struct Node {
    int data;           // 数据域
    struct Node* next;  // 指针域
} Node;

// 创建链表函数
Node* createLinkedList(int n) {
    Node* head = NULL;  // 头节点指针
    Node* p = NULL;     // 当前节点指针

    // 依次创建n个节点
    for (int i = 0; i < n; i++) {
        int data;
        printf("请输入第%d个节点的值:", i + 1);
        scanf("%d", &data);

        // 创建新节点
        Node* newNode = (Node*)malloc(sizeof(Node));
        newNode->data = data;
        newNode->next = NULL;

        // 将新节点插入到链表头部
        if (head == NULL) {
            head = newNode;
        } else {
            newNode->next = head;
            head = newNode;
        }
    }

    return head;
}

// 打印链表函数
void printLinkedList(Node* head) {
    Node* p = head;  // 当前节点指针

    printf("链表内容为:");
    while (p != NULL) {
        printf("%d ", p->data);
        p = p->next;
    }
    printf("\n");
}

int main() {
    int n;
    printf("请输入链表的节点个数:");
    scanf("%d", &n);

    // 创建链表
    Node* head = createLinkedList(n);

    // 打印链表
    printLinkedList(head);

    return 0;
}

代码解析

  1. 定义链表节点结构体 Node

    • data: 数据域,用于存储节点的数据。
    • next: 指针域,指向下一个节点。
  2. 创建链表函数 createLinkedList

    • 初始化头节点指针 headNULL,表示空链表。
    • 使用循环依次创建 n 个节点。
    • 每个节点都分配内存,并将数据域 data 设置为用户输入的值。
    • 使用头插法将新节点插入到链表头部:
      • 如果链表为空,则将新节点设置为头节点。
      • 否则,将新节点的 next 指针指向当前头节点,并将头节点指针指向新节点。
    • 最后返回头节点指针 head
  3. 打印链表函数 printLinkedList

    • 初始化当前节点指针 p 为头节点指针 head
    • 使用循环遍历链表,输出每个节点的数据域 data
  4. 主函数 main

    • 获取用户输入的链表节点个数 n
    • 调用 createLinkedList 函数创建链表,并将返回值赋值给 head 指针。
    • 调用 printLinkedList 函数打印链表的内容。

总结

本文介绍了使用 C 语言单链表头插法创建链表的方法,并提供了完整代码示例和解析。通过理解代码中的关键部分,我们可以轻松地掌握单链表头插法的实现原理。

C语言单链表头插法创建链表 - 使用函数实现

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

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