c语言

c语言中的链表怎么使用

小亿
84
2023-11-22 14:38:15
栏目: 编程语言

在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));
    newNode->data = data;
    newNode->next = NULL;
    return newNode;
}

// 插入节点到链表尾部
void insertNode(Node** head, int data) {
    Node* newNode = createNode(data);
    if (*head == NULL) {
        *head = newNode;
    } else {
        Node* curr = *head;
        while (curr->next != NULL) {
            curr = curr->next;
        }
        curr->next = newNode;
    }
}

// 删除节点
void deleteNode(Node** head, int data) {
    Node* curr = *head;
    Node* prev = NULL;
    while (curr != NULL && curr->data != data) {
        prev = curr;
        curr = curr->next;
    }
    if (curr == NULL) {
        printf("节点 %d 不存在\n", data);
        return;
    }
    if (prev == NULL) {
        *head = curr->next;
    } else {
        prev->next = curr->next;
    }
    free(curr);
    printf("节点 %d 已删除\n", data);
}

// 遍历链表
void printList(Node* head) {
    if (head == NULL) {
        printf("链表为空\n");
        return;
    }
    Node* curr = head;
    while (curr != NULL) {
        printf("%d ", curr->data);
        curr = curr->next;
    }
    printf("\n");
}

int main() {
    Node* head = NULL;

    // 插入节点到链表
    insertNode(&head, 1);
    insertNode(&head, 2);
    insertNode(&head, 3);

    // 遍历链表
    printList(head);  // 输出:1 2 3

    // 删除节点
    deleteNode(&head, 2);
    printList(head);  // 输出:1 3

    return 0;
}

上述代码定义了一个链表节点的结构体Node,并实现了创建节点、插入节点、删除节点以及遍历链表等操作。在main函数中,创建了一个链表并进行了相应的操作,最终输出了链表的内容。

0
看了该问题的人还看了