C语言 数据结构——链表使用示例

链表是一种常用的数据结构,可以在运行时动态分配内存空间,非常灵活。以下是一个简单的C语言链表例程:

#include 
#include 

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

// 插入节点到链表头部
void insert_node(struct Node** head, int data) {
    struct Node* new_node = (struct Node*)malloc(sizeof(struct Node));
    new_node->data = data;
    new_node->next = *head;
    *head = new_node;
}

// 删除指定数值的节点
void delete_node(struct Node** head, int val) {
    struct Node* prev = NULL;
    struct Node* curr = *head;
    while (curr != NULL && curr->data != val) {
        prev = curr;
        curr = curr->next;
    }
    if (curr == NULL) {
        printf("Node with value %d not found.\n", val);
        return;
    }
    if (prev == NULL) {
        *head = curr->next;
    } else {
        prev->next = curr->next;
    }
    free(curr);
}

// 打印链表所有元素
void print_list(struct Node* head) {
    while (head != NULL) {
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}

int main() {
    struct Node* head = NULL;   // 链表头指针初始化为空
    insert_node(&head, 1);      // 在头部插入节点
    insert_node(&head, 2);
    insert_node(&head, 3);
    insert_node(&head, 4);
    printf("Original list: ");
    print_list(head);           // 打印链表所有元素
    delete_node(&head, 2);      // 删除数值为2的节点
    printf("List after deletion of node with value 2: ");
    print_list(head);           // 再次打印链表所有元素
    return 0;
}

该程序定义了一个链表节点结构体,包含一个整型数据成员和一个指向下一个节点的指针。实现了三个基本操作:插入节点到链表头部、删除指定数值的节点、打印链表所有元素。在 main() 函数中,初始化一个空的链表头指针,并依次插入四个节点,然后打印链表所有元素。最后删除数值为2的节点,并再次打印链表所有元素。

你可能感兴趣的:(高级嵌入式c语言,链表,数据结构)