构造一个单链表并完成以下操作。 (1)初始化InitList(&L) (2)判断单链表是否为空ListEmpty(L) (3)计算单链表的长度ListLength(L) (4)单链表的插入操作List
时间: 2024-10-17 14:08:07 浏览: 37
在C++中,我们可以使用结构体(struct)和指针来创建一个简单的单链表,并实现上述操作:
```cpp
#include <iostream>
// 定义链表节点结构
struct ListNode {
int data;
ListNode* next;
ListNode(int val = 0) : data(val), next(nullptr) {} // 初始化节点值
};
class List {
private:
ListNode* head;
public:
// 初始化链表
void InitList(ListNode*& L) {
L = new ListNode(); // 创建头节点
if (L == nullptr) {
std::cerr << "Memory allocation failed!" << std::endl;
return;
}
}
// 判断链表是否为空
bool ListEmpty(const ListNode* L) const {
return L == nullptr; // 如果head为nullptr,则表示链表为空
}
// 计算链表长度
size_t ListLength(const ListNode* L) const {
size_t length = 0;
ListNode* current = L;
while (current != nullptr) {
++length;
current = current->next;
}
return length;
}
// 在链表末尾插入元素
void ListInsert(ListNode*& L, int value) {
if (ListEmpty(L)) {
L = new ListNode(value);
} else {
ListNode* newNode = new ListNode(value);
ListNode* temp = L;
while (temp->next != nullptr) {
temp = temp->next;
}
temp->next = newNode;
}
}
};
int main() {
ListNode* list = nullptr; // 创建链表实例
List myList;
myList.InitList(list); // 初始化链表
// 测试操作
if (!myList.ListEmpty(list)) {
std::cout << "List is not empty.\n";
std::cout << "Length of the list: " << myList.ListLength(list) << "\n";
myList.ListInsert(list, 5);
std::cout << "After insertion, length: " << myList.ListLength(list) << "\n";
} else {
std::cout << "List is empty.\n";
}
return 0;
}
```
阅读全文