以下是使用 C 语言实现一元稀疏多项式的表示及基本操作的示例代码: ```c #include <stdio.h> #include <stdlib.h> // 多项式的项 typedef struct PolyTerm { int coef; // 系数 int exp; // 指数 struct PolyTerm* next; } PolyTerm; // 创建新的项 PolyTerm* createTerm(int coef, int exp) { PolyTerm* newTerm = (PolyTerm*)malloc(sizeof(PolyTerm)); if (newTerm == NULL) { printf("内存分配失败\n"); return NULL; } newTerm->coef = coef; newTerm->exp = exp; newTerm->next = NULL; return newTerm; } // 销毁多项式 void destroyPoly(PolyTerm* head) { PolyTerm* temp; while (head!= NULL) { temp = head; head = head->next; free(temp); } } // 输出多项式 void printPoly(PolyTerm* head) { PolyTerm* current = head; while (current!= NULL) { printf("%dx^%d ", current->coef, current->exp); if (current->next!= NULL) { printf("+ "); } current = current->next; } printf("\n"); } // 加法操作 PolyTerm* addPoly(PolyTerm* a, PolyTerm* b) { PolyTerm* result = NULL; PolyTerm* tail = NULL; while (a!= NULL && b!= NULL) { PolyTerm* newTerm = createTerm(0, 0); if (a->exp > b->exp) { newTerm->coef = a->coef; newTerm->exp = a->exp; a = a->next; } else if (a->exp < b->exp) { newTerm->coef = b->coef; newTerm->exp = b->exp; b = b->next; } else { newTerm->coef = a->coef + b->coef; newTerm->exp = a->exp; a = a->next; b = b->next; } if (newTerm->coef!= 0) { if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } } else { free(newTerm); } } while (a!= NULL) { PolyTerm* newTerm = createTerm(a->coef, a->exp); if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } a = a->next; } while (b!= NULL) { PolyTerm* newTerm = createTerm(b->coef, b->exp); if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } b = b->next; } return result; } // 减法操作 PolyTerm* subtractPoly(PolyTerm* a, PolyTerm* b) { PolyTerm* result = NULL; PolyTerm* tail = NULL; while (a!= NULL && b!= NULL) { PolyTerm* newTerm = createTerm(0, 0); if (a->exp > b->exp) { newTerm->coef = a->coef; newTerm->exp = a->exp; a = a->next; } else if (a->exp < b->exp) { newTerm->coef = -b->coef; newTerm->exp = b->exp; b = b->next; } else { newTerm->coef = a->coef - b->coef; newTerm->exp = a->exp; a = a->next; b = b->next; } if (newTerm->coef!= 0) { if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } } else { free(newTerm); } } while (a!= NULL) { PolyTerm* newTerm = createTerm(a->coef, a->exp); if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } a = a->next; } while (b!= NULL) { PolyTerm* newTerm = createTerm(-b->coef, b->exp); if (result == NULL) { result = newTerm; tail = newTerm; } else { tail->next = newTerm; tail = newTerm; } b = b->next; } return result; } int main() { // 构建多项式 a PolyTerm* a = createTerm(3, 14); PolyTerm* term2 = createTerm(2, 8); PolyTerm* term3 = createTerm(1, 0); a->next = term2; term2->next = term3; // 构建多项式 b PolyTerm* b = createTerm(8, 14); PolyTerm* term4 = createTerm(-3, 10); PolyTerm* term5 = createTerm(10, 6); b->next = term4; term4->next = term5; printf("多项式 a: "); printPoly(a); printf("多项式 b: "); printPoly(b); PolyTerm* sum = addPoly(a, b); printf("相加结果: "); printPoly(sum); PolyTerm* diff = subtractPoly(a, b); printf("相减结果: "); printPoly(diff); // 销毁多项式 destroyPoly(a); destroyPoly(b); destroyPoly(sum); destroyPoly(diff); return 0; } ``` 这段代码实现了一元稀疏多项式的表示和基本操作,包括创建、销毁、输出、加法和减法。在`main`函数中,构建了两个示例多项式`a`和`b`,并进行了加法和减法操作,最后销毁了使用的内存。 [2024-10-18 17:19:15 | AI写代码神器 | 1615点数解答]