一元多项式的表示和相加 C语言实现
时间: 2023-08-31 16:06:08 浏览: 184
一元多项式可以通过结构体来表示,结构体中包含两个成员变量,分别表示多项式的系数和指数。具体的C语言实现如下:
```
typedef struct PolyNode {
int coef; // 系数
int expon; // 指数
struct PolyNode *next; // 指向下一个节点的指针
} PolyNode, *Polynomial;
```
其中,Polynomial类型为指向PolyNode结构体的指针。
多项式的相加可以通过遍历两个多项式的链表来实现。具体的实现步骤如下:
1. 定义一个新链表,作为相加后的结果,初始化为NULL。
2. 遍历两个多项式的链表,依次进行以下操作:
a. 如果当前节点的指数相同,则将系数相加,并将结果插入到新链表中。
b. 如果当前节点的指数不同,则将指数小的节点插入到新链表中,并将指针向后移动一位。
3. 将剩余的节点依次插入到新链表中。
4. 返回新链表作为相加后的结果。
具体的C语言实现如下:
```
Polynomial add(Polynomial p1, Polynomial p2) {
Polynomial result = NULL, tail = NULL; // 定义新链表及其尾指针
// 遍历两个链表
while (p1 && p2) {
PolyNode *temp = (PolyNode *)malloc(sizeof(PolyNode)); // 创建新节点
if (p1->expon == p2->expon) { // 如果指数相同
temp->coef = p1->coef + p2->coef; // 系数相加
temp->expon = p1->expon;
p1 = p1->next; // 指针向后移动一位
p2 = p2->next;
} else if (p1->expon > p2->expon) { // 如果p1的指数更大
temp->coef = p1->coef;
temp->expon = p1->expon;
p1 = p1->next;
} else { // 如果p2的指数更大
temp->coef = p2->coef;
temp->expon = p2->expon;
p2 = p2->next;
}
temp->next = NULL; // 将新节点插入到新链表中
if (!result) {
result = tail = temp;
} else {
tail->next = temp;
tail = temp;
}
}
// 将剩余的节点插入到新链表中
while (p1) {
PolyNode *temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p1->coef;
temp->expon = p1->expon;
temp->next = NULL;
if (!result) {
result = tail = temp;
} else {
tail->next = temp;
tail = temp;
}
p1 = p1->next;
}
while (p2) {
PolyNode *temp = (PolyNode *)malloc(sizeof(PolyNode));
temp->coef = p2->coef;
temp->expon = p2->expon;
temp->next = NULL;
if (!result) {
result = tail = temp;
} else {
tail->next = temp;
tail = temp;
}
p2 = p2->next;
}
return result; // 返回新链表作为相加后的结果
}
```
阅读全文
相关推荐
![c](https://img-home.csdnimg.cn/images/20250102104920.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20241231045053.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![docx](https://img-home.csdnimg.cn/images/20241231044901.png)
![-](https://img-home.csdnimg.cn/images/20241231045021.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![-](https://img-home.csdnimg.cn/images/20241231044937.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)