c语言链表操作示例分享


当然,我可以分享一个C语言中链表操作的基本示例。这里,我将演示如何定义一个简单的链表结构,如何创建链表节点,以及如何进行基本的插入和打印操作。


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

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

// 创建一个新节点
Node* createNode(int data) {
    Node* newNode = (Node*)malloc(sizeof(Node)); // 为新节点分配内存
    if (newNode == NULL) { // 内存分配失败检查
        printf("Memory allocation failed.\n");
        exit(1);
    }
    newNode->data = data; // 设置节点数据
    newNode->next = NULL; // 初始化下一个节点指针为NULL
    return newNode;
}

// 在链表末尾插入一个新节点
void insertAtTail(Node** head, int data) {
    Node* newNode = createNode(data); // 创建新节点
    if (*head == NULL) { // 如果链表为空,新节点即为头节点
        *head = newNode;
    } else {
        Node* current = *head; // 从头节点开始遍历
        while (current->next != NULL) { // 找到链表的最后一个节点
            current = current->next;
        }
        current->next = newNode; // 将新节点插入到链表末尾
    }
}

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

// 主函数示例
int main() {
    Node* head = NULL; // 初始化链表为空

    // 插入一些数据
    insertAtTail(&head, 1);
    insertAtTail(&head, 2);
    insertAtTail(&head, 3);

    // 打印链表
    printList(head);

    // 注意:这里省略了释放链表内存的代码,实际使用中应适当释放

    return 0;
}

上述代码展示了如何在C语言中操作链表,包括定义链表节点结构体、创建节点、在链表末尾插入节点以及打印链表。这是一个非常基础的示例,链表操作还包括删除节点、查找节点等,但这里为了保持简洁性,只展示了最基本的几个操作。