c语言编程笔录

您现在的位置是:首页 > 编程 > 编程经验

编程经验

c语言简单链表

黄文隆 2023-09-24编程经验
简单链表是一种线性数据结构,它由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的指针。C语言是一种广泛使用的编程语言,适合用于实现简单链表。首先,需要定义一个节点结构体,用于

简单链表是一种线性数据结构,它由一系列节点组成,每个节点包含两部分:数据和指向下一个节点的指针。C语言是一种广泛使用的编程语言,适合用于实现简单链表。

首先,需要定义一个节点结构体,用于存储数据和指向下一个节点的指针:

typedef struct Node{
    int data;
    struct Node* next;
}Node;

结构体中的data字段用于存储节点的数据,next字段用于指向下一个节点的地址。定义了节点结构体后,可以开始实现链表的增、删、改、查等操作。

1. 链表的初始化:

Node* head = NULL;

链表的头指针初始化为NULL,表示链表为空。

2. 添加节点:

void addNode(Node** headRef, int newData){
    Node* newNode = (Node*)malloc(sizeof(Node));
    newNode->data = newData;
    newNode->next = *headRef;
    *headRef = newNode;
}

addNode函数用于在链表的头部添加新节点。首先动态分配内存以存储新节点,然后将新节点的数据设置为传入的newData,将新节点的next指针指向原来的头节点,最后将头指针指向新节点。

3. 删除节点:

void deleteNode(Node** headRef, int key){
    Node* temp = *headRef;
    Node* prev = NULL;
    
    if (temp != NULL && temp->data == key){
        *headRef = temp->next;
        free(temp);
        return;
    }
    
    while (temp != NULL && temp->data != key){
        prev = temp;
        temp = temp->next;
    }
    
    if (temp == NULL) return;
    
    prev->next = temp->next;
    free(temp);
}

deleteNode函数用于删除链表中指定数据的节点。首先判断头节点是否是要删除的节点,若是,则将头节点指向下一个节点并释放内存。若不是,则从头节点开始遍历链表,直到找到要删除的节点或链表末尾。若找到要删除的节点,则将前一个节点的next指针指向待删除节点的下一个节点,并释放内存。

4. 遍历链表:

void printList(Node* head){
    while (head){
        printf("%d ", head->data);
        head = head->next;
    }
    printf("\n");
}

printList函数用于遍历链表并输出每个节点的数据。从头节点开始,依次输出节点的数据,并将当前节点指向下一个节点,直到链表末尾。

简单链表是一种常用的数据结构,可以应用于很多实际问题。通过定义节点结构体和实现相关操作函数,我们可以方便地操作链表中的节点。

文章评论