题目:根据.h写出.cpp
考点:
1.链表的默认构造, 拷贝构造,传参构造以及析构函数等。
代码:
/********** BEGIN **********/
#include <cstdlib>
#include <cstring>
#include "LinkedList.h" //默认构造函数,构造一个逻辑为空的链表
LinkedList::LinkedList() { head = nullptr; size = 0;
} //拷贝构造函数,构造一个逻辑上与参数内容相同的链表
LinkedList::LinkedList(const LinkedList& rhs) { Node *p = rhs.head; head = nullptr; while (p != nullptr) { Node *node = new Node(p->data, nullptr); if (head == nullptr) { head = node; } else { Node *temp = head; while (temp->next != nullptr) { temp = temp->next; } temp->next = node; } p = p->next; } size = rhs.size;
} //原生数组构造函数,构造一个内容与给定数组相同的链表
LinkedList::LinkedList(int const a[], int n) { head = nullptr; size = 0; for (int i = 0; i < n; i++) { Node *node = new Node(a[i], nullptr); if (head == nullptr) { head = node; } else { Node *temp = head; while (temp->next != nullptr) { temp = temp->next; } temp->next = node; } size++; }
} //填充构造函数,构造一个内容为n个value的链表
LinkedList::LinkedList(int n, int value) { head = nullptr; size = 0; for (int i = 0; i < n; i++) { Node *node = new Node(value, nullptr); if (head == nullptr) { head = node; } else { Node *temp = head; while (temp->next != nullptr) { temp = temp->next; } temp->next = node; } size++; }
} //析构函数,一定要自行实现,否则有内存泄漏
LinkedList::~LinkedList() { Node *p = head; while (p != nullptr) { Node *temp = p; p = p->next; delete temp; }
}