1、单链表的应用1.1 编写函数Init()用来初始化一个空链表;1.2 编写函数CreatFromTail()用来创建一个链表;1.3 函数Polyadd()用来实现两个多项式相加算法;1.4 函数Print()用来输出多项式测试 C++语言
时间: 2024-10-07 10:05:52 浏览: 30
在C++中,我们可以利用单链表来表示多项式的系数和对应的项。以下是针对每个部分的简单描述:
1. **函数Init()** (初始化空链表)
这个函数用于创建一个新的链表,并将其头指针设置为`nullptr`,因为单链表的第一个节点通常没有前驱节点。
```cpp
struct Node {
int coef; // 系数
int term; // 项
Node* next; // 指向下一个节点的指针
};
Node* Init() {
return new Node{0, 0, nullptr};
}
```
2. **函数CreatFromTail()** (从尾部添加元素)
如果需要动态地构建链表,这个函数可以在现有链表的末尾插入新的节点。输入是一个新值以及当前链表的头指针。
```cpp
void CreatFromTail(Node*& head, int coef, int term) {
if (head == nullptr) {
head = new Node{coef, term, nullptr};
return;
}
Node* newNode = new Node{coef, term, head->next};
head->next = newNode;
}
```
3. **函数Polyadd()** (多项式相加)
这个函数接受两个链表作为参数,遍历它们并计算对应系数的和,然后将结果添加到新链表中。如果遇到相同的项,则只需累加系数。
```cpp
Node* Polyadd(Node* list1, Node* list2) {
Node* resultHead = nullptr;
while (list1 && list2) {
int sumCoef = list1->coef + list2->coef;
Node* newNode = new Node{sumCoef, list1->term + list2->term, nullptr};
newNode->next = resultHead;
resultHead = newNode;
list1 = list1->next;
list2 = list2->next;
}
// 如果其中一个链表有剩余,直接添加剩余的部分
if (list1) resultHead->next = list1;
else if (list2) resultHead->next = list2;
return resultHead;
}
```
4. **函数Print()** (输出多项式)
这个函数用于打印链表中存储的多项式,逐项显示系数和项。
```cpp
void Print(Node* head) {
Node* temp = head;
while (temp) {
cout << temp->coef << "x^" << temp->term << " ";
temp = temp->next;
}
cout << endl;
}
```
阅读全文