单链表进化-实现一个最优的单链表插入算法

本文探讨如何实现最优的单链表插入算法,通过解决边界处理问题,如插入值大于链表所有节点值或插入首个位置时的情况。经过改进,最终版本的算法更加简洁且通用,减少了特殊处理的冗余。
摘要由CSDN通过智能技术生成

实现如下有序的单链表:

创建数据结构:

typedef struct NODE {
    int value;
    struct NODE *link;
} Node;
  • 版本一:
int ssl_insert(Node *current, int new_value) {
    Node *previous;
    Node *new_node;

    while(current->value < new_value) {
        previous = current;
        current = current->link;
    }

    new_node = malloc(sizeof(Node));
    if(new_node == NULL) {
        return FALSE;
    }
    new_node->value = new_value;

    new_node->link = current;
    previous->link = new_node;
    
    return TRUE;
}

这个是一个最简单的版本,从链表的起始位置访问链表,依次比对要插入的值和当前的节点值,当前值大于要插入的值时就停下来,函数里面使用了一个previous指针,指向上一个节点,因为找到要插入的位置时已经越过了要插入的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值