C语言链式表实现指南:从入门到精通

链式表是一种常见的数据结构,在C语言中可以用结构体和指针来实现。以下是一个基本的链式表结构和一些常见操作的示例代码,并附带详细的解释,帮助你快速入门并掌握链式表的使用。

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

// 定义链表节点结构
typedef struct Node {
    int data;           // 节点数据
    struct Node* next;  // 指向下一个节点的指针
} Node;

// 初始化链表
void initializeList(Node** head) {
    *head = NULL;  // 将头指针指向NULL,表示链表为空
}

// 在链表末尾插入节点
void insert(Node** head, int data) {
    // 分配内存创建新节点
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = NULL;

    // 如果链表为空,将新节点作为头节点
    if (*head == NULL) {
        *head = newNode;
    } else {
        // 找到链表的最后一个节点
        Node* current = *head;
        while (current->next != NULL) {
            current = current->next;
        }
        // 将新节点连接到最后一个节点之后
        current->next = newNode;
    }
}

// 删除链表中指定值的节点
void removeNode(Node** head, int data) {
    // 如果链表为空,直接返回
    if (*head == NULL) {
        return;
    }

    Node* current = *head;
    Node* previous = NULL;

    // 遍历链表,查找要删除的节点
    while (current != NULL) {
        if (current->data == data) {
            // 找到要删除的节点
            if (previous == NULL) {
                // 如果要删除的是头节点,更新头指针
                *head = current->next;
            } else {
                // 将前一个节点的指针指向要删除节点的下一个节点
                previous->next = current->next;
            }
            // 释放要删除节点的内存
            free(current);
            return;
        }
        previous = current;
        current = current->next;
    }
}

// 打印链表
void printList(Node* head) {
    if (head == NULL) {
        printf('链表为空。\n');
    } else {
        Node* current = head;
        while (current != NULL) {
            printf('%d ', current->data);
            current = current->next;
        }
        printf('\n');
    }
}

int main() {
    Node* head;
    initializeList(&head);

    insert(&head, 1);
    insert(&head, 2);
    insert(&head, 3);
    insert(&head, 4);
    
    printf('链表内容:');
    printList(head);

    removeNode(&head, 3);

    printf('删除节点后的链表内容:');
    printList(head);

    return 0;
}

这段代码演示了如何:

  • 初始化链表: initializeList() 函数将头指针设置为 NULL,表示链表为空。
  • 插入节点: insert() 函数在链表末尾插入一个新节点。
  • 删除节点: removeNode() 函数删除链表中指定值的节点。
  • 打印链表: printList() 函数遍历链表并打印每个节点的数据。

你可以根据需要修改和扩展这段代码,例如实现其他链表操作,如:

  • 在链表头部插入节点
  • 查找链表中的特定节点
  • 反转链表
  • 合并两个有序链表

希望这篇指南能帮助你理解如何在 C 语言中使用链式表。 Happy coding! 😊


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

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