cpp#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<stdlib.h> typedef struct poly { int coeff; int exp; struct poly* next; }*link,Node; void InputPoly(link head); void Print(link head); bool Insert(link head, int coeff, int exp); void Combin2List(link heada, link headb, link headab); void Clear(link head); int main() { link heada, headb; link headab; heada = (link)malloc(sizeof(Node)); heada->next = NULL; headb = (link)malloc(sizeof(Node)); headb->next = NULL; headab = (link)malloc(sizeof(Node)); headab->next = NULL; printf("请输入第一个多项式的系数和指数,以(0,0)结束:\n"); InputPoly(heada); printf("第一个"); Print(heada); printf("请输入第二个多项式的系数和指数,以(0,0)结束:\n"); InputPoly(headb); printf("第二个"); Print(headb); Combin2List(heada, headb, headab); printf("合并为:"); Print(headab); Clear(heada); Clear(headb); Clear(headab); return 0; } void InputPoly(link head) { int coeff, exp; printf("请输入系数和指数(如:\"2 3\"表示2x^3):"); scanf("%d%d", &coeff, &exp); while (coeff != 0 || exp != 0) { Insert(head, coeff, exp); printf("请输入系数和指数:"); scanf("%d%d", &coeff, &exp); } } void Print(link head) { link p = head->next; while (p != NULL) { if (p != head->next && p->coeff > 0) printf("+"); if (p->coeff == -1 && p->exp != 0) printf("-"); if ((p->coeff != 1 && p->coeff != -1) || p->exp == 0) printf("%d", p->coeff); if (p->exp != 1 && p->exp != 0) printf("x^%d", p->exp); if (p->exp == 1) printf("x"); p = p->next; } puts(""); } bool Insert(link head, int coeff, int exp) { link node; link q, p; q = head; p = head->next; node = (link)malloc(sizeof(Node)); node->coeff = coeff; node->exp = exp; node->next = NULL; if (head->next == NULL) { head->next = node; } else { while (p != NULL) { if (node->exp > p->exp) { node->next = p; q->next = node; break; } else if(node->exp < p->exp) { q = p; p = p->next; } else { p->coeff = p->coeff + node->coeff; free(node); break; } } if (p == NULL) q->next = node; } return true; } void Combin2List(link heada, link headb, link headab) { link pa, pb; pa = heada->next; pb = headb->next; while (pa != NULL && pb != NULL) { if (pa->exp > pb->exp) { Insert(headab, pa->coeff, pa->exp); pa = pa->next; } else if (pa->exp == pb->exp) { Insert(headab, pa->coeff + pb->coeff, pb->exp); pa = pa->next; pb = pb->next; } else { Insert(headab, pb->coeff, pb->exp); pb = pb->next; } } while (pa != NULL) { Insert(headab, pa->coeff, pa->exp); pa = pa->next; } while (pb != NULL) { Insert(headab, pb->coeff, pb->exp); pb = pb->next; } } void Clear(link head) { link p = head->next; while (p != NULL) { head->next= p->next; free(p); p = head->next; } free(head); }
多项式加法——C语言
脉牛杂德2024-11-08 10:17
相关推荐
CSCN新手听安42 分钟前
list的常用操作编程之路,妙趣横生42 分钟前
list模拟实现梅茜Mercy3 小时前
数据结构:链表(经典算法例题)详解88号技师3 小时前
2024年12月一区SCI-加权平均优化算法Weighted average algorithm-附Matlab免费代码IT猿手3 小时前
多目标应用(一):多目标麋鹿优化算法(MOEHO)求解10个工程应用,提供完整MATLAB代码青春男大3 小时前
java栈--数据结构88号技师3 小时前
几款性能优秀的差分进化算法DE(SaDE、JADE,SHADE,LSHADE、LSHADE_SPACMA、LSHADE_EpSin)-附Matlab免费代码Zer0_on3 小时前
数据结构栈和队列一只小bit3 小时前
数据结构之栈,队列,树我要学编程(ಥ_ಥ)3 小时前
一文详解“二叉树中的深搜“在算法中的应用