定义表示代数多项式中一项的结构体struct Item类型如下: double coeff;//多项式系数 int power;//x的幂 在主函数main()中定义struct Item类型变量item1,从键盘输入数据赋给item1的各成员,再输入x的值,计算该项值,并显示。 为结构体struct Item类型增加struct Item* next成员。并以此为结点,使用malloc函数动态建立多项式单链表。程序结束前使用free函数释放单链表所有结点。
时间: 2024-03-23 14:36:55 浏览: 116
一元多项式表示及相加
好的,以下是代码实现:
```c++
#include <iostream>
#include <cstdlib>
using namespace std;
struct Item {
double coeff;
int power;
Item* next;
};
double calculate(Item item, double x) {
return item.coeff * pow(x, item.power);
}
int main() {
Item item1;
cout << "Enter coefficient: ";
cin >> item1.coeff;
cout << "Enter power: ";
cin >> item1.power;
cout << "Enter x value: ";
double x;
cin >> x;
cout << "Value of item1: " << calculate(item1, x) << endl;
Item* head = NULL;
int num;
cout << "Enter number of items in polynomial: ";
cin >> num;
for (int i = 0; i < num; i++) {
Item* newItem = (Item*)malloc(sizeof(Item)); // 使用 malloc 动态分配内存
cout << "Enter coefficient of item " << i+1 << ": ";
cin >> newItem->coeff;
cout << "Enter power of item " << i+1 << ": ";
cin >> newItem->power;
newItem->next = head;
head = newItem;
}
double total = 0.0;
Item* current = head;
while (current != NULL) {
total += calculate(*current, x);
current = current->next;
}
cout << "Value of polynomial: " << total << endl;
current = head;
while (current != NULL) {
Item* temp = current;
current = current->next;
free(temp); // 使用 free 释放内存
}
return 0;
}
```
首先定义了一个 `calculate` 函数,用于计算某一项在给定 `x` 值时的值。然后在 `main` 函数中先输入一个项并计算其值,然后动态建立多项式的单链表,输入每一项的系数和幂,同时将其作为一个新的结点插入链表头。最后遍历链表计算多项式的值,然后使用 `free` 释放链表中每个结点的内存。
阅读全文