C语言单链表实现:新手入门教程

本文将带你用 C语言实现一个简单的单链表,包含初始化、插入节点、删除节点和打印链表等基本操作,非常适合新手入门学习数据结构。

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

// 定义链表节点结构
struct Node {
    int data;
    struct Node* next;
};

// 初始化链表
struct Node* initList() {
    return NULL;
}

// 在链表末尾插入节点
struct Node* insertNode(struct Node* head, int data) {
    struct Node* newNode = (struct Node*)malloc(sizeof(struct Node));
    newNode->data = data;
    newNode->next = NULL;

    if (head == NULL) {
        head = newNode;
    } else {
        struct Node* temp = head;
        while (temp->next != NULL) {
            temp = temp->next;
        }
        temp->next = newNode;
    }
    return head;
}

// 删除链表中指定的节点
struct Node* deleteNode(struct Node* head, int data) {
    if (head == NULL) {
        printf('链表为空!\n');
        return head;
    }

    struct Node* temp = head;
    struct Node* prev = NULL;

    // 如果要删除的节点是头节点
    if (temp != NULL && temp->data == data) {
        head = temp->next;
        free(temp);
        return head;
    }

    // 找到要删除的节点及其前一个节点
    while (temp != NULL && temp->data != data) {
        prev = temp;
        temp = temp->next;
    }

    // 如果要删除的节点不存在
    if (temp == NULL) {
        printf('要删除的节点不存在!\n');
        return head;
    }

    // 删除节点
    prev->next = temp->next;
    free(temp);
    return head;
}

// 打印链表
void printList(struct Node* head) {
    struct Node* temp = head;
    while (temp != NULL) {
        printf('%d ', temp->data);
        temp = temp->next;
    }
    printf('\n');
}

int main() {
    struct Node* head = initList();
    head = insertNode(head, 1);
    head = insertNode(head, 2);
    head = insertNode(head, 3);
    head = insertNode(head, 4);

    printf('链表:');
    printList(head);

    head = deleteNode(head, 3);

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

    return 0;
}

这个程序中包含了链表的初始化、插入节点、删除节点和打印链表的功能。你可以根据自己的需要进行修改和扩展。

学习建议:

  1. 仔细阅读代码并理解每个函数的功能。
  2. 尝试在程序中添加新的节点并进行删除操作,观察结果。
  3. 可以尝试实现其他链表操作,例如查找节点、修改节点等。

通过这个简单的例子,你已经掌握了单链表的基本操作。希望本文能帮助你更好地理解单链表,并在未来的学习和应用中更加得心应手。

C语言单链表实现:新手入门教程

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

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