单链表独有元素迁移问题:无法添加至第三链表的修复方案
单链表独有元素提取问题修复方案
原代码核心问题
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
相关产品推荐
相关产品推荐

