编写一个linklist.cpp,用于实现单链表的各种基本运算(包括整体建立单链表及九种基本运算),并在exp7-1.cpp的主函数中使用这些函数并输出结果。
时间: 2024-10-26 15:16:32 浏览: 46
实现循环单链表的各种基本运算的算法
在C++中,我们可以编写一个名为`LinkList.cpp`的文件,用于实现单链表的数据结构及其基础操作。这里是一个简单的例子,展示了如何创建一个节点、初始化链表、添加元素、删除元素、查找元素以及打印链表等基本功能:
```cpp
#include <iostream>
// 定义链表节点结构体
struct ListNode {
int data;
ListNode* next;
ListNode(int val) : data(val), next(nullptr) {}
};
// 创建一个新的链表头节点
ListNode* createLinkedList() {
return nullptr; // 如果需要一个空链表,返回nullptr
}
// 添加新元素到链表末尾
ListNode* appendToList(ListNode* head, int value) {
if (head == nullptr) {
return new ListNode(value);
}
ListNode* tail = head;
while (tail->next != nullptr) {
tail = tail->next;
}
tail->next = new ListNode(value);
return head;
}
// 删除指定值的节点
ListNode* deleteNode(ListNode* head, int value) {
if (head == nullptr || head->data == value) {
ListNode* temp = head;
head = head->next;
delete temp;
return head;
}
ListNode* current = head;
while (current->next != nullptr && current->next->data != value) {
current = current->next;
}
if (current->next != nullptr) {
ListNode* temp = current->next;
current->next = current->next->next;
delete temp;
}
return head;
}
// 查找给定值的节点
ListNode* findNode(ListNode* head, int value) {
ListNode* current = head;
while (current != nullptr) {
if (current->data == value) {
return current;
}
current = current->next;
}
return nullptr; // 没找到对应值
}
// 打印链表
void printList(ListNode* head) {
ListNode* temp = head;
while (temp != nullptr) {
std::cout << temp->data << " -> ";
temp = temp->next;
}
std::cout << "NULL" << std::endl;
}
int main() {
// 实现链表操作,例如:创建链表、添加元素、删除元素、查找元素等
// 然后,在exp7-1.cpp中调用上述函数,并适当设置输入,最后输出结果
// 由于这里是理论描述,你需要在exp7-1.cpp中实际编写这部分代码
// 示例代码:
// ListNode* listHead = createLinkedList();
// listHead = appendToList(listHead, 5); // 添加元素
// // 更多操作...
// printList(listHead); // 输出链表内容
return 0;
}
```
在`exp7-1.cpp`中,你可以按照以上提供的函数原型,实现相应的操作,并调用它们。记得处理可能出现的边界情况和异常。完成后,运行`exp7-1.cpp`程序会看到链表的操作效果。
阅读全文