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

单链表独有元素迁移问题:无法添加至第三链表的修复方案

单链表独有元素提取问题修复方案

原代码核心问题

  • uniqueElements函数的目标链表参数采用值传递,函数内修改的是局部副本,外部链表头不会同步更新
  • 计数逻辑错误:count初始值设为1,遍历链表时会把当前节点自身计入统计,导致仅出现一次的元素最终计数为2,永远无法触发添加操作
  • 目标链表初始化错误:直接new Node会创建未初始化的空节点,引发内存访问错误或无效数据

修复后完整代码

1. 修改uniqueElements函数(修正参数传递与计数逻辑)

void uniqueElements(Node* list1, Node** uniqueList) {
    for (Node *temp1 = list1; temp1 != NULL; temp1 = temp1->next) {
        int count = 0;
        // 遍历链表统计当前元素出现次数
        for(Node *temp2 = list1; temp2 != NULL; temp2 = temp2->next) {
            if(temp1->data == temp2->data) {
                count++;
            }
        }
        // 仅自身链表中出现一次的元素,添加到目标链表
        if(count == 1) {
            addNode(uniqueList, temp1->data);
        }
    }
}

2. 修正目标链表的初始化与调用

// 初始化为空链表,避免无效节点
Node* listUnique = NULL;
// 传递目标链表的指针地址,确保修改能同步到外部
uniqueElements(list1, &listUnique);
uniqueElements(list2, &listUnique);

3. 添加链表输出函数

#include <iostream>
using namespace std;

void printList(Node* head) {
    Node* temp = head;
    while (temp != NULL) {
        cout << temp->data << " ";
        temp = temp->next;
    }
    cout << endl;
}

使用方式

填充完list1和list2后,调用printList(listUnique)即可输出第三链表的所有独有元素。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 00:47:34