c语言链表进行一元多项式运算代码
时间: 2024-09-21 15:13:28 浏览: 61
jsq.rar_多项式运算
在C语言中,我们可以使用链表数据结构来表示一元多项式的系数和指数。这里是一个简单的例子,展示如何创建链表表示多项式,以及如何执行加法操作:
```c
#include <stdio.h>
#include <stdlib.h>
// 定义链表节点
typedef struct Node {
int coefficient; // 系数
int exponent; // 指数
struct Node* next; // 指向下一个节点的指针
} PolynomialNode;
// 创建新节点
PolynomialNode* create_node(int coefficient, int exponent) {
PolynomialNode* newNode = (PolynomialNode*)malloc(sizeof(PolynomialNode));
newNode->coefficient = coefficient;
newNode->exponent = exponent;
newNode->next = NULL;
return newNode;
}
// 添加项到链表
void add_term(PolynomialNode** head, int coefficient, int exponent) {
PolynomialNode* newNode = create_node(coefficient, exponent);
if (*head == NULL) {
*head = newNode;
} else {
PolynomialNode* current = *head;
while (current->next != NULL && current->exponent > exponent) {
current = current->next;
}
current->next = newNode;
}
}
// 打印链表表示的一元多项式
void print_polynomial(PolynomialNode* head) {
PolynomialNode* temp = head;
while (temp != NULL) {
printf("%d*x^%d ", temp->coefficient, temp->exponent);
temp = temp->next;
}
printf("\n");
}
int main() {
PolynomialNode* poly1_head = NULL;
PolynomialNode* poly2_head = NULL;
// 示例:添加两个多项式的项
add_term(&poly1_head, 1, 0); // x
add_term(&poly1_head, 2, 2); // x^2
add_term(&poly2_head, -1, 1); // -x
// 打印多项式
printf("First polynomial: ");
print_polynomial(poly1_head);
printf("Second polynomial: ");
print_polynomial(poly2_head);
// 对两个多项式相加
add_term(&poly1_head, 0, 0); // 初始化结果多项式的常数项
PolynomialNode* result_head = poly1_head;
PolynomialNode* current1 = poly1_head;
PolynomialNode* current2 = poly2_head;
while (current1 != NULL || current2 != NULL) {
if (current2 == NULL || (current1 != NULL && current1->exponent >= current2->exponent)) {
result_head->next = current1;
result_head = current1;
current1 = current1->next;
} else {
result_head->next = current2;
result_head = current2;
current2 = current2->next;
}
}
print_polynomial(result_head);
return 0;
}
```
这个程序首先定义了链表节点,然后实现了创建节点、添加项和打印多项式功能。`main`函数中展示了如何创建两个多项式并相加。
阅读全文