链表拷贝构造函数c++
时间: 2023-09-02 13:11:59 浏览: 150
链表的拷贝构造函数实现如下:
```c++
//链表节点
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(NULL) {}
};
//链表
class LinkedList {
public:
//默认构造函数
LinkedList() : head(NULL) {}
//拷贝构造函数
LinkedList(const LinkedList& other) {
if(!other.head) {
head = NULL;
return;
}
//创建新的头节点
head = new ListNode(other.head->val);
ListNode* cur = head;
ListNode* otherCur = other.head->next;
//遍历原链表并复制
while(otherCur) {
cur->next = new ListNode(otherCur->val);
cur = cur->next;
otherCur = otherCur->next;
}
}
private:
ListNode* head;
};
```
在拷贝构造函数中,首先判断被复制的链表是否为空,如果为空则直接将新链表的头节点置为 NULL。
然后,创建新链表的头节点,并使用指针 cur 指向它。
接着,使用指针 otherCur 遍历被复制的链表,并依次复制其节点到新链表中,直到遍历完整个被复制的链表。
最后,返回新链表的头节点即可。
阅读全文