用c++做一个void Search(LinkList<Person>& link, const T& t)菜单,里面包含有对链表进行增删改查的功能
时间: 2024-09-17 15:07:54 浏览: 20
首先,我们需要创建一个链表类`LinkList`和一个人员类`Person`。然后,我们可以在`LinkList`类中实现一个名为`Search`的成员函数,该函数接受一个`Person`类型的引用作为参数,并在链表中查找与给定参数匹配的元素。以下是一个简单的实现:
```cpp
#include <iostream>
#include <string>
class Person {
public:
Person(const std::string& name, int age) : name_(name), age_(age) {}
std::string GetName() const { return name_; }
int GetAge() const { return age_; }
private:
std::string name_;
int age_;
};
template <typename T>
class LinkList {
public:
struct Node {
T data;
Node* next;
};
LinkList() : head_(nullptr) {}
~LinkList() {
while (head_) {
Node* temp = head_;
head_ = head_->next;
delete temp;
}
}
void Add(const T& data) {
Node* new_node = new Node{data, nullptr};
if (!head_) {
head_ = new_node;
} else {
Node* current = head_;
while (current->next) {
current = current->next;
}
current->next = new_node;
}
}
void Remove(const T& data) {
if (!head_) return;
if (head_->data == data) {
Node* temp = head_;
head_ = head_->next;
delete temp;
return;
}
Node* current = head_;
while (current->next && current->next->data != data) {
current = current->next;
}
if (current->next) {
Node* temp = current->next;
current->next = current->next->next;
delete temp;
}
}
void Update(const T& old_data, const T& new_data) {
Node* current = head_;
while (current) {
if (current->data == old_data) {
current->data = new_data;
break;
}
current = current->next;
}
}
bool Search(const T& t) const {
Node* current = head_;
while (current) {
if (current->data == t) {
return true;
}
current = current->next;
}
return false;
}
private:
Node* head_;
};
```
在这个实现中,我们定义了一个`LinkList`模板类,它可以存储任何类型的数据。我们还定义了一个`Person`类,它包含姓名和年龄属性。`LinkList`类中的`Search`函数遍历链表,查找与给定参数匹配的元素。如果找到匹配的元素,函数返回`true`,否则返回`false`。