1.1 编写函数Init()用来初始化一个空链表; 1.2 编写函数CreatFromTail()用来创建一个链表; 1.3 函数Polyadd()用来实现两个多项式相加算法; 1.4 函数Print()用来输出多项式
时间: 2024-09-29 13:10:15 浏览: 26
在设计一个多项式数据结构及其操作的示例中,我们可以构建以下几个函数:
1. **函数 Init():**
这个函数用于创建一个新的空多项式链表。链表节点通常会包含系数和下一个节点的指针。以下是这个函数的基本实现:
```c++
struct PolynomialNode {
int coefficient;
PolynomialNode* next;
};
PolynomialNode* Init() {
return new PolynomialNode{0, nullptr};
}
```
2. **函数 CreatFromTail():**
如果要从尾部开始创建一个链表,这个函数可以接收一系列的系数和对应指数作为输入,并动态添加到链表中。例如:
```c++
void CreatFromTail(PolynomialNode*& head, const std::vector<int>& coefficients) {
for (int i = coefficients.size() - 1; i >= 0; --i) {
head = new PolynomialNode{coefficients[i], head};
}
}
```
3. **函数 Polyadd():**
实现两个多项式的相加。遍历两个链表并累加相应的系数,同时维护新的链表结构:
```c++
PolynomialNode* Polyadd(PolynomialNode* a, PolynomialNode* b) {
PolynomialNode* result = Init();
while (a && b) {
if (a->coefficient > b->coefficient) {
result->next = new PolynomialNode{a->coefficient, result->next};
a = a->next;
} else if (a->coefficient < b->coefficient) {
result->next = new PolynomialNode{b->coefficient, result->next};
b = b->next;
} else {
result->next = new PolynomialNode{a->coefficient, result->next};
a = a->next;
b = b->next;
}
}
// 处理剩余的部分,如果有一个链表未结束
while (a) {
result->next = new PolynomialNode{a->coefficient, result->next};
a = a->next;
}
while (b) {
result->next = new PolynomialNode{b->coefficient, result->next};
b = b->next;
}
return result;
}
```
4. **函数 Print():**
输出多项式链表的内容,显示每个系数及对应的指数:
```c++
void Print(PolynomialNode* node) {
while (node) {
printf("%d", node->coefficient);
if (node->next) {
printf("*x^%d + ", node->next->coefficient);
}
node = node->next;
}
printf("\n");
}
```