3、在C++中定义Person类,类包含name和age属性,定义链表结构体Persons,存储5个person对象至链表中,输出链表内容
时间: 2024-09-25 15:17:01 浏览: 75
在C++中,首先我们需要定义`Person`类,包含`name`和`age`两个属性:
```cpp
class Person {
public:
std::string name;
int age;
// 构造函数
Person(const std::string& n, int a) : name(n), age(a) {}
};
```
接着,我们定义一个链表结构体`Persons`,用于存储多个`Person`对象,并包含头结点和指向下一个节点的指针:
```cpp
template <typename T>
struct Node {
T data;
Node<T>* next;
};
template <typename T>
class LinkedList {
private:
Node<T> *head;
int size;
public:
LinkedList() : head(nullptr), size(0) {}
// 添加节点到链表末尾
void addNode(T value) {
if (head == nullptr) {
head = new Node<T>{value, nullptr};
} else {
Node<T>* newNode = new Node<T>{value, head->next};
head->next = newNode;
}
size++;
}
// 输出链表内容
void printList() {
Node<T>* current = head;
while (current != nullptr) {
std::cout << "Name: " << current->data.name << ", Age: " << current->data.age << std::endl;
current = current->next;
}
}
// 其他链表操作...
};
```
现在我们可以创建并初始化五个`Person`对象,并将它们添加到链表中:
```cpp
int main() {
LinkedList<Person> personList;
Person p1("Alice", 25);
Person p2("Bob", 30);
Person p3("Charlie", 35);
Person p4("David", 40);
Person p5("Eve", 45);
for (auto& p : {p1, p2, p3, p4, p5}) {
personList.addNode(p);
}
personList.printList();
return 0;
}
```
运行这段代码后,会输出链表中每个人的姓名和年龄。注意,这里并没有使用模板参数来指定`Person`类型,因为我们已经明确知道链表里的元素类型。
阅读全文