You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C语言链表实现:在指定元素X的紧邻位置复制插入相同元素

实现思路

  • 首先从用户处获取需要复制的目标数值X
  • 从第一个有效节点开始遍历链表:
    • 若当前节点数值等于X,创建新节点复制X的值,插入到当前节点的紧邻后方
    • 插入完成后直接跳过刚插入的新节点,避免重复遍历导致无限插入
    • 若当前节点数值不等于X,直接移动到下一个节点即可

完整实现代码

你只需要替换空的duplicate函数即可,代码如下:

// Duplicate X values in the list
void duplicate(Node *lista){
    if(empty(lista)){
        printf("链表为空,无法执行复制操作\n");
        return;
    }
    int X;
    printf("\n请输入需要复制的元素X:");
    scanf("%d", &X);
    Node *curr = lista->next; // 跳过头节点,从第一个有效节点开始遍历
    while(curr != NULL){
        if(curr->x == X){
            // 创建新节点
            Node *new_node = (Node *)malloc(sizeof(Node));
            new_node->x = X;
            // 插入到当前节点后方
            new_node->next = curr->next;
            curr->next = new_node;
            // 跳过刚插入的节点,避免重复处理
            curr = new_node->next;
        }else{
            // 数值不匹配直接移动到下一个节点
            curr = curr->next;
        }
    }
    printf("复制操作执行完成\n");
}

补充注意:你当前main函数中创建头节点后没有初始化next指针为NULL,会导致空链表判断逻辑出错,建议修改main函数的头节点初始化代码为:

Node *list = (Node*)malloc(sizeof(Node));
list->next = NULL; // 新增该行初始化头节点的next指针

内容的提问来源于stack exchange,提问作者Gabriel Schumacher

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 20:09:02