设计一个C++链表,它可以将数字储存在链表中,并且能实现数的阶乘
时间: 2024-02-25 20:55:32 浏览: 25
好的,我可以为您设计一个C++链表,可以将数字储存在链表中,并且可以实现数的阶乘。以下是代码实现:
```c++
#include <iostream>
using namespace std;
// 定义链表节点
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
// 定义链表类
class LinkedList {
public:
LinkedList() {
head = nullptr;
}
~LinkedList() {
ListNode *p = head;
while (p != nullptr) {
ListNode *temp = p;
p = p->next;
delete temp;
}
}
// 添加节点
void addNode(int val) {
ListNode *node = new ListNode(val);
if (head == nullptr) {
head = node;
} else {
ListNode *p = head;
while (p->next != nullptr) {
p = p->next;
}
p->next = node;
}
}
// 计算阶乘
void factorial() {
int result = 1;
ListNode *p = head;
while (p != nullptr) {
result *= p->val;
p = p->next;
}
cout << "The factorial is: " << result << endl;
}
private:
ListNode *head;
};
int main() {
LinkedList list;
int n, val;
cout << "Please enter the number of nodes: ";
cin >> n;
cout << "Please enter the value of each node: ";
for (int i = 0; i < n; i++) {
cin >> val;
list.addNode(val);
}
list.factorial();
return 0;
}
```
您可以通过输入节点的数量和每个节点的值来构建链表,并且通过调用`factorial()`方法来计算阶乘。希望这可以帮助到您!