1、单链表的应用 1.1 编写函数Init()用来初始化一个空链表; 1.2 编写函数CreatFromTail()用来创建一个链表; 1.3 函数Polyadd()用来实现两个多项式相加算法; 1.4 函数Print()用来输出多项式
时间: 2024-10-07 21:07:50 浏览: 48
单链表是一种基础的数据结构,它通过节点间的链接来存储数据。以下是单链表应用到多项式计算中的几个场景:
1. **函数 Init() 初始化空链表**:这个函数用于创建一个新的链表头部,通常会设置头结点为null,表示链表为空。
```cpp
Node* Init() {
Node* head = new Node(); // 创建新节点作为头结点
head->next = nullptr; // 空链表的下一个节点指针设为nullptr
return head;
}
```
2. **函数 CreatFromTail() 创建链表**:如果要输入多项式的系数和指数形成链表,可以先将所有项按照降序排列(最高次幂在前),然后逐项添加到链表的尾部。
```cpp
void CreatFromTail(Node*& head, int term[], int degree) {
for (int i = degree; i >= 0; i--) {
if (term[i] != 0) {
Node* newNode = new Node(term[i], i);
newNode->next = head;
head = newNode;
}
}
}
```
3. **函数 Polyadd() 实现多项式相加**:遍历两个链表,依次对应位置相加并更新新的链表。注意合并同类项。
```cpp
Node* Polyadd(Node* list1, Node* list2) {
Node* dummy = new Node(0); // 创建虚拟头节点
Node* tail = dummy;
while (list1 && list2) {
int sum = list1->val + list2->val;
tail->next = new Node(sum, list1->exp);
tail = tail->next;
list1 = list1->next;
list2 = list2->next;
}
if (list1) tail->next = list1;
else if (list2) tail->next = list2;
return dummy->next;
}
```
4. **函数 Print() 输出多项式**:从链表头开始,递归地打印每个节点的值和指数。
```cpp
void Print(Node* head) {
if (head == nullptr) return;
cout << head->val << "x^" << head->exp << " ";
Print(head->next);
}
```
阅读全文