数据结构——单向链表(C语言版)

简介: 数据结构——单向链表(C语言版)



1. 定义节点结构体

首先,我们需要定义表示链表节点的结构体。每个节点包含一个数据域和一个指向下一个节点的指针域。

typedef struct Node {
    int data;
    struct Node* next;
} Node;
2. 初始化链表

接下来,我们需要编写函数来初始化链表。初始化链表时,我们将头指针指向NULL,表示链表为空。

Node* head = NULL;
3. 插入节点

实现在链表的头部插入节点的函数:

Node* insertNode(Node* head, int data) {
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = head;
    return newNode;
}
4. 删除节点

实现删除指定数值节点的函数:

Node* deleteNode(Node* head, int data) {
    Node* current = head;
    Node* prev = NULL;
 
    while (current != NULL) {
        if (current->data == data) {
            if (prev == NULL) {
                head = current->next;
            } else {
                prev->next = current->next;
            }
            free(current);
            break;
        }
        prev = current;
        current = current->next;
    }
 
    return head;
}
5. 遍历链表

实现遍历链表并打印节点数据的函数:

void printList(Node* head) {
    Node* current = head;
 
    while (current != NULL) {
        printf("%d -> ", current->data);
        current = current->next;
    }
    printf("NULL\\n");
}
6. 主函数

在主函数中测试链表操作:

int main() {
    Node* head = NULL;
 
    head = insertNode(head, 1);
    head = insertNode(head, 2);
    head = insertNode(head, 3);
 
    printf("Initial List: ");
    printList(head);
 
    head = deleteNode(head, 2);
 
    printf("List after deleting 2: ");
    printList(head);
 
    return 0;
}

通过以上步骤,我们实现了用C语言创建、插入、删除和遍历单向链表的基本操作。在实陧过程中,要注意内存分配和释放,避免内存泄漏。链表是一种重要的数据结构,掌握链表的实现原理对于理解其他数据结构和算法也非常有帮助。


在接下来我们也将学习双向链表等更有意思的东西,如果本篇有不理解的地方,欢迎私信我或在评论区指出,期待与你们共同进步。

相关文章
|
5天前
【数据结构OJ题】环形链表
力扣题目——环形链表
14 3
【数据结构OJ题】环形链表
|
5天前
【数据结构OJ题】复制带随机指针的链表
力扣题目——复制带随机指针的链表
12 1
【数据结构OJ题】复制带随机指针的链表
|
5天前
【数据结构OJ题】环形链表II
力扣题目——环形链表II
10 1
【数据结构OJ题】环形链表II
|
6天前
【数据结构OJ题】相交链表
力扣题目——相交链表
14 1
【数据结构OJ题】相交链表
|
14天前
【数据结构OJ题】合并两个有序链表
力扣题目——合并两个有序链表
27 8
【数据结构OJ题】合并两个有序链表
|
16天前
【数据结构OJ题】移除链表元素
力扣题目——移除链表元素
18 2
【数据结构OJ题】移除链表元素
|
15天前
【数据结构OJ题】链表中倒数第k个结点
牛客题目——链表中倒数第k个结点
14 1
【数据结构OJ题】链表中倒数第k个结点
|
16天前
|
存储 DataX C语言
【数据结构】双链表
数据结构中的双链表
17 1
【数据结构】双链表
|
6天前
|
存储 C语言
数据结构:循环链表
【7月更文挑战第21天】
19 2
|
13天前
【数据结构OJ题】链表分割
牛客题目——链表分割
12 0
【数据结构OJ题】链表分割