数据结构课后习题
我发现网上大部分代码都是没有考虑浅拷贝的问题,这在开发中是非常致命的问题。
深拷贝与浅拷贝区别
1、深拷贝
深拷贝指拷贝对象与原来的对象独立存在,即使改动、删除一个都不会影响另一个。
2、浅拷贝
浅拷贝只复制指针地址,两个对象共用一块内存,更改其中一个值会导致另一个跟着改变,删除可能会造成错误。
void Merge(SingleList* L1, SingleList* L2) //L2接收合并后链表
{
if (L2->first == NULL) //L1不为空L2为空时,深拷贝L1到L2
{
Node* p=L1->first;
L2->n = L1->n;
Node* q = (Node*)malloc(sizeof(Node));
L2->first = q;
q->element = p->element;
q->link = NULL;
while (p->link!=NULL)
{
p = p->link;
Node* temp = (Node*)malloc(sizeof(Node));
temp->element = p->element;
temp->link = NULL;
q->link = temp;
q = q->link;
}
return;
}
//其他情况采用将L1中元素插入到L2中,同样是深拷贝
Node* p = L1->first, * q = L2->first, * r = q;
L2->n += L1->n;