建立单链表,并在单链表上实现插入、删除和查找操作。编写一个程序linklist.cpp,实现单链表的各种基本运算和整体建表算法(假设单链表的元素类型 ElemType为char),设计一个程序exp2_1.cpp
时间: 2024-10-21 21:14:30 浏览: 52
Java单链表基本操作的实现
5星 · 资源好评率100%
在C++中,我们可以创建一个简单的单链表结构,包括节点和相关的操作函数。首先,我们需要定义一个Node类表示链表中的节点,它包含一个数据元素(这里是`char`类型)和指向下一个节点的指针。
```cpp
// linklist.h
class Node {
public:
char data;
Node* next;
// 构造函数
Node(char val = '\0') : data(val), next(nullptr) {}
};
class LinkedList {
private:
Node* head; // 链表头
public:
LinkedList() : head(nullptr) {}
// 插入操作:在链表末尾添加新节点
void insertAtEnd(char value);
// 删除操作:按值删除节点(若存在)
void deleteNode(char value);
// 查找操作:找到第一个匹配的节点
bool searchNode(char value) const;
// 其他辅助方法...
};
```
然后,在`linklist.cpp`文件中实现上述操作:
```cpp
// linklist.cpp
void LinkedList::insertAtEnd(char value) {
if (!head) {
head = new Node(value);
return;
}
Node* curr = head;
while (curr->next) {
curr = curr->next;
}
curr->next = new Node(value);
}
void LinkedList::deleteNode(char value) {
if (!head || !head->data == value)
return;
Node* temp = head;
head = head->next;
delete temp;
return;
// 更一般的情况需要遍历链表查找并处理
// ...
}
bool LinkedList::searchNode(char value) const {
Node* curr = head;
while (curr != nullptr) {
if (curr->data == value)
return true;
curr = curr->next;
}
return false;
}
```
在`exp2_1.cpp`中,你可以通过以下几个步骤来使用这个`LinkedList`类:
```cpp
#include "linklist.h"
int main() {
LinkedList list;
// 插入操作示例
list.insertAtEnd('A');
list.insertAtEnd('B');
// 删除操作示例
list.deleteNode('A'); // 如果找到了'A',会删除它
// 查找操作示例
if (list.searchNode('B')) {
std::cout << "Found 'B' in the list.\n";
} else {
std::cout << "'B' not found in the list.\n";
}
return 0;
}
```
阅读全文