Untitled
unknown
plain_text
2 years ago
1.7 kB
10
Indexable
#include <stdio.h>
#include <stdlib.h>
struct node {
int coeff;
int exp;
struct node *next;
};
struct node *insert(struct node *head, int coeff, int exp) {
struct node *new_term = (struct node *)malloc(sizeof(struct node));
new_term->coeff = coeff;
new_term->exp = exp;
new_term->next = NULL;
if (head == NULL) {
return new_term;
}
struct node *curr = head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = new_term;
return head;
}
struct node *multipoly(struct node *poly1, struct node *poly2) {
struct node *result = NULL;
for (struct node *term1 = poly1; term1 != NULL; term1 = term1->next) {
for (struct node *term2 = poly2; term2 != NULL; term2 = term2->next) {
int coeff = term1->coeff * term2->coeff;
int exp = term1->exp + term2->exp;
result = insert(result, coeff, exp);
}
}
return result;
}
void display(struct node *poly) {
struct node *curr = poly;
while (curr != NULL) {
printf("(%d)x^%d", curr->coeff, curr->exp);
curr = curr->next;
if (curr != NULL) {
printf("+");
}
}
printf("\n");
}
int main() {
struct node *poly1 = NULL;
struct node *poly2 = NULL;
poly1 = insert(poly1, 4, 3);
poly1 = insert(poly1, 7, 1);
poly1 = insert(poly1, 5, 0);
poly2 = insert(poly2, 5, 3);
poly2 = insert(poly2, 3, 2);
poly2 = insert(poly2, 1, 0);
printf("Polynomial 1: ");
display(poly1);
printf("Polynomial 2: ");
display(poly2);
struct node *result = multipoly(poly1, poly2);
printf("Resultant Polynomial: ");
display(result);
return 0;
}
Editor is loading...