c语言链表实现多项式加减
时间: 2024-04-05 12:28:30 浏览: 98
C语言链表可以用来实现多项式的加减运算。下面是一种常见的链表结构来表示多项式:
```c
// 定义多项式的节点结构
typedef struct Node {
int coefficient; // 系数
int exponent; // 指数
struct Node* next; // 指向下一个节点的指针
} Node;
// 多项式相加函数
Node* addPolynomials(Node* poly1, Node* poly2) {
Node* result = NULL; // 存储结果的链表头节点
Node* tail = NULL; // 存储结果的链表尾节点
while (poly1 != NULL && poly2 != NULL) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->next = NULL;
if (poly1->exponent > poly2->exponent) {
newNode->coefficient = poly1->coefficient;
newNode->exponent = poly1->exponent;
poly1 = poly1->next;
} else if (poly1->exponent < poly2->exponent) {
newNode->coefficient = poly2->coefficient;
newNode->exponent = poly2->exponent;
poly2 = poly2->next;
} else {
newNode->coefficient = poly1->coefficient + poly2->coefficient;
newNode->exponent = poly1->exponent;
poly1 = poly1->next;
poly2 = poly2->next;
}
if (result == NULL) {
result = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
// 将剩余的节点添加到结果链表中
if (poly1 != NULL) {
tail->next = poly1;
}
if (poly2 != NULL) {
tail->next = poly2;
}
return result;
}
// 多项式相减函数
Node* subtractPolynomials(Node* poly1, Node* poly2) {
Node* result = NULL; // 存储结果的链表头节点
Node* tail = NULL; // 存储结果的链表尾节点
while (poly1 != NULL && poly2 != NULL) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->next = NULL;
if (poly1->exponent > poly2->exponent) {
newNode->coefficient = poly1->coefficient;
newNode->exponent = poly1->exponent;
poly1 = poly1->next;
} else if (poly1->exponent < poly2->exponent) {
newNode->coefficient = -poly2->coefficient;
newNode->exponent = poly2->exponent;
poly2 = poly2->next;
} else {
newNode->coefficient = poly1->coefficient - poly2->coefficient;
newNode->exponent = poly1->exponent;
poly1 = poly1->next;
poly2 = poly2->next;
}
if (result == NULL) {
result = newNode;
tail = newNode;
} else {
tail->next = newNode;
tail = newNode;
}
}
// 将剩余的节点添加到结果链表中
if (poly1 != NULL) {
tail->next = poly1;
}
if (poly2 != NULL) {
tail->next = poly2;
}
return result;
}
```
上述代码中,我们定义了一个多项式的节点结构,包含系数和指数,并且有一个指向下一个节点的指针。`addPolynomials`函数用于实现多项式的加法,`subtractPolynomials`函数用于实现多项式的减法。这两个函数都接受两个多项式的链表作为输入,并返回一个新的链表作为结果。
阅读全文
相关推荐
















