在上一题基础上,为结构体struct Item类型增加struct Item* next成员。并以此为结点,使用malloc函数动态建立多项式单链表。程序结束前使用free函数释放单链表所有结点。
时间: 2024-03-25 11:37:06 浏览: 61
一元多项式简单的计算器
4星 · 用户满意度95%
好的,以下是你需要的代码:
```c++
#include <iostream>
#include <cstdlib>
using namespace std;
struct Item {
double coeff;
int power;
Item* next;
};
int main() {
int n;
cout << "请输入多项式项数:";
cin >> n;
Item* head = nullptr;
Item* tail = nullptr;
for (int i = 0; i < n; i++) {
Item* item = (Item*)malloc(sizeof(Item)); // 使用 malloc 分配内存
cout << "请输入第 " << i+1 << " 项的系数:";
cin >> item->coeff;
cout << "请输入第 " << i+1 << " 项的指数:";
cin >> item->power;
item->next = nullptr;
if (head == nullptr) { // 如果链表为空,添加第一个节点
head = item;
tail = item;
} else { // 否则添加到链表尾部
tail->next = item;
tail = item;
}
}
// 计算多项式值
double x, value = 0;
cout << "请输入 x 的值:";
cin >> x;
Item* p = head;
while (p != nullptr) {
value += p->coeff * pow(x, p->power);
p = p->next;
}
cout << "多项式的值为:" << value << endl;
// 释放链表内存
p = head;
while (p != nullptr) {
Item* tmp = p;
p = p->next;
free(tmp); // 释放内存
}
return 0;
}
```
上述代码中,我们在 `Item` 结构体中增加了一个 `next` 指针,用来构建多项式单链表。在主函数中,我们首先读入多项式项数 `n`,然后使用 `malloc` 分配内存,创建多项式单链表。在链表的创建过程中,我们需要判断链表是否为空,如果为空,添加第一个节点,否则添加到链表尾部。
接着,我们读入 x 的值,并计算多项式值。最后,我们使用 `free` 函数释放链表所有节点的内存。需要注意的是,在释放内存之前,我们需要遍历整个链表,将每个节点的内存都释放掉。
阅读全文