2) 设计结点类模板Node和链表类模板LinkedList,并实现从键盘输入5个整数,用这些整数作为结点数据,生成一个单链表,并按顺序输出链表中结点的数值,使用尾插法
时间: 2024-02-28 10:54:59 浏览: 31
好的,我来解答你的问题。
以下是Node类模板的实现:
```cpp
template <typename T>
class Node {
public:
T data; // 结点数据
Node<T>* next; // 指向下一个结点的指针
Node(T d) : data(d), next(nullptr) {} // 构造函数
};
```
以下是LinkedList类模板的实现:
```cpp
template <typename T>
class LinkedList {
private:
Node<T>* head; // 指向链表头结点的指针
Node<T>* tail; // 指向链表尾结点的指针
int size; // 链表大小
public:
LinkedList() : head(nullptr), tail(nullptr), size(0) {} // 构造函数
// 尾插法插入结点
void insert(T data) {
Node<T>* newNode = new Node<T>(data); // 创建新结点
if (tail == nullptr) { // 链表为空
head = tail = newNode;
}
else { // 链表不为空
tail->next = newNode;
tail = newNode;
}
size++; // 链表大小加1
}
// 打印链表中所有结点的数据
void print() {
Node<T>* current = head;
while (current != nullptr) {
std::cout << current->data << " ";
current = current->next;
}
std::cout << std::endl;
}
};
```
接下来,我们可以在主函数中使用LinkedList类模板来生成一个单链表,并按顺序输出链表中结点的数值。代码如下:
```cpp
int main() {
LinkedList<int> list;
int n;
std::cout << "请输入5个整数:" << std::endl;
for (int i = 0; i < 5; i++) {
std::cin >> n;
list.insert(n); // 尾插法插入结点
}
std::cout << "链表中的结点数据为:" << std::endl;
list.print(); // 输出链表中结点的数据
return 0;
}
```
当我们输入5个整数后,程序会输出这5个整数构成的链表中结点的数据,如下所示:
```
请输入5个整数:
1 2 3 4 5
链表中的结点数据为:
1 2 3 4 5
```
希望这个回答能够帮到你!