117.info
人生若只如初见

c语言单链表怎么删除指定节点

C语言单链表删除指定节点的步骤如下:

  1. 首先,需要找到要删除的节点的前一个节点。
  2. 将前一个节点的next指针指向要删除节点的next指针,即跳过要删除的节点。
  3. 释放要删除的节点的内存空间。

具体实现如下:

#include 
#include 

// 定义链表节点结构体
typedef struct Node {
    int data;           // 数据域
    struct Node* next;  // 指针域
} Node;

// 删除指定节点
void deleteNode(Node* head, int value) {
    Node* prev = head;          // 前一个节点
    Node* current = head->next; // 当前节点

    // 遍历链表,查找要删除的节点
    while (current != NULL) {
        if (current->data =https://www.yisu.com/ask/= value) {>next;
    }

    // 当前节点为NULL,表示没有找到要删除的节点
    if (current == NULL) {
        printf("Node with value %d not found.\n", value);
        return;
    }

    // 找到要删除的节点,删除
    prev->next = current->next;
    free(current);
}

// 打印链表
void printList(Node* head) {
    Node* current = head->next; // 从第一个节点开始打印

    // 遍历链表,依次打印节点的数据
    while (current != NULL) {
        printf("%d ", current->data);
        current = current->next;
    }

    printf("\n");
}

int main() {
    // 创建链表 1->2->3->4->5
    Node* head = (Node*)malloc(sizeof(Node));  // 头节点
    Node* node1 = (Node*)malloc(sizeof(Node)); // 第一个节点
    Node* node2 = (Node*)malloc(sizeof(Node)); // 第二个节点
    Node* node3 = (Node*)malloc(sizeof(Node)); // 第三个节点
    Node* node4 = (Node*)malloc(sizeof(Node)); // 第四个节点

    head->next = node1;
    node1->data = https://www.yisu.com/ask/1;>next = node2;
    node2->data = https://www.yisu.com/ask/2;>next = node3;
    node3->data = https://www.yisu.com/ask/3;>next = node4;
    node4->data = https://www.yisu.com/ask/4;>next = NULL;

    printf("Original list: ");
    printList(head);

    // 删除节点2
    deleteNode(head, 2);

    printf("List after deletion: ");
    printList(head);

    // 释放内存
    free(node4);
    free(node3);
    free(node2);
    free(node1);
    free(head);

    return 0;
}

以上代码中,首先创建了一个包含5个节点的链表,然后调用deleteNode()函数删除了节点2,最后打印链表,输出结果为:

Original list: 1 2 3 4 
List after deletion: 1 3 4 

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe0ddAzsLAQBTAFI.html

推荐文章

  • c语言里面怎么表示乘方

    在C语言中,可以使用`pow()`函数来表示乘方。`pow()`函数是C标准库(math.h)中的一个数学函数,用于计算一个数的幂。`pow()`函数的原型如下:double pow(double...

  • C语言求素数程序代码

    以下是一个使用C语言编写的求素数的程序代码:
    #include int isPrime(int num) { if (num

  • c语言thread函数的用法是什么

    在C语言中,thread函数的用法是用来创建线程的。线程是程序执行的一个单独的控制流,可以同时执行多个线程,实现并发执行。
    thread函数的用法如下: 首先,...

  • C语言共用体和结构体有什么区别

    C语言中的共用体(union)和结构体(struct)是两种不同的数据类型,它们有一些区别,如下所示: 成员类型:结构体的成员可以是不同的数据类型,每个成员都占用独...

  • idea前后端分离项目如何启动

    启动一个前后端分离的项目,可以按照以下步骤进行: 确定项目的需求和功能:与团队或客户明确项目的目标、功能和需求,以便后续的开发工作。 技术选型:根据项目...

  • SpringBoot中操作Redis的方法是什么

    在Spring Boot中操作Redis有多种方法: 使用RedisTemplate:RedisTemplate是Spring框架提供的一个用于操作Redis的模板类,它提供了一系列的方法来操作Redis的数据...

  • 怎么用python给数据加上高斯噪声

    使用Python可以使用numpy库来给数据加上高斯噪声。下面是一个示例代码:
    import numpy as np def add_gaussian_noise(data, mean=0, std=1): noise = np.ra...

  • c++链表的基本操作有哪些

    C++链表的基本操作包括: 创建链表:创建一个空链表或者带有初始元素的链表。
    插入元素:在链表的某个位置插入一个新元素。
    删除元素:删除链表中指定...