117.info
人生若只如初见

c语言怎么编写一个简单的单链表

以下是一个简单的单链表的C语言实现:

#include 
#include 

struct ListNode {
    int val;
    struct ListNode* next;
};

// 创建链表节点
struct ListNode* createNode(int value) {
    struct ListNode* newNode = (struct ListNode*)malloc(sizeof(struct ListNode));
    newNode->val = value;
    newNode->next = NULL;
    return newNode;
}

// 插入节点到链表尾部
void insert(struct ListNode** head, int value) {
    struct ListNode* newNode = createNode(value);
    if (*head == NULL) {
        *head = newNode;
    } else {
        struct ListNode* cur = *head;
        while (cur->next != NULL) {
            cur = cur->next;
        }
        cur->next = newNode;
    }
}

// 删除指定值的节点
void removeNode(struct ListNode** head, int value) {
    struct ListNode* cur = *head;
    struct ListNode* prev = NULL;
    while (cur != NULL) {
        if (cur->val == value) {
            if (prev == NULL) { // 删除头节点
                *head = cur->next;
            } else {
                prev->next = cur->next;
            }
            free(cur);
            return;
        }
        prev = cur;
        cur = cur->next;
    }
}

// 打印链表
void printList(struct ListNode* head) {
    struct ListNode* cur = head;
    while (cur != NULL) {
        printf("%d ", cur->val);
        cur = cur->next;
    }
    printf("\n");
}

int main() {
    struct ListNode* head = NULL;

    // 插入节点
    insert(&head, 1);
    insert(&head, 2);
    insert(&head, 3);

    // 打印链表
    printList(head);

    // 删除节点
    removeNode(&head, 2);

    // 打印链表
    printList(head);

    return 0;
}

该代码实现了一个简单的单链表,包括创建节点、插入节点、删除节点以及打印链表的功能。在main()函数中演示了如何使用这些功能。

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

推荐文章

  • c语言goto用法是什么

    在C语言中,goto语句用于从一个位置跳转到另一个位置。它可以用于跳出循环、条件语句或者函数。goto语句的语法如下:
    goto label;
    ...
    label: //...

  • goto在c语言中的运用方法是什么

    goto 语句在 C 语言中允许程序从一个位置跳转到另一个位置。然而,在实际编程中,过度使用 goto 语句通常被认为是一种不好的编程实践,因为它可能导致代码结构混...

  • c语言堆和栈的区别是什么

    C语言中的堆和栈是两种不同的内存分配方式。 栈(Stack):栈是由编译器自动分配和释放的内存区域,用于存储局部变量和函数调用的上下文信息。栈的特点是先进后出...

  • C语言结构体数组怎么定义和使用

    在C语言中,可以通过定义结构体数组来存储多个具有相同数据类型的结构体对象。下面是定义和使用结构体数组的示例代码:
    #include // 定义一个结构体类型

  • python path模块怎么安装

    在Python中,`path`模块不是一个独立的模块,而是`os`模块的一个子模块。因此,你不需要单独安装`path`模块,它已经随着Python的标准库一起安装了。你可以通过以...

  • android怎么查看崩溃日志

    要查看Android设备的崩溃日志,可以按照以下步骤进行操作:1. 在设备上打开设置应用,通常是一个齿轮形状的图标。2. 滚动并找到“关于手机”或“关于设备”的选项...

  • r语言怎么将两个向量合并成一个

    在R语言中,可以使用`c()`函数将两个向量合并成一个。以下是一个示例:# 创建两个向量vec1

  • python如何导入turtle库

    在Python中,可以使用`import`语句来导入`turtle`库。导入`turtle`库后,可以使用其中的函数和方法来绘制图形。以下是导入`turtle`库的示例代码:import turtle使...