一元多项式的加/减法运算 您所在的位置:网站首页 指数加减法则 一元多项式的加/减法运算

一元多项式的加/减法运算

2024-05-27 03:24| 来源: 网络整理| 查看: 265

第一行:多项式A的第一项的系数、指数(以空格分隔)

第一行:多项式A的第二项的系数、指数(以空格分隔)

...

第n行:多项式A的第n项的系数、指数(以空格分隔) (假设多项式A的项数为n)

(空行)

第一行:多项式B的第一项的系数、指数(以空格分隔)

第一行:多项式B的第二项的系数、指数(以空格分隔)

...

第m行:多项式B的第m项的系数、指数(以空格分隔) (假设多项式B的项数为m)

(空行)

第一行:加/减法计算后,结果多项式A的第一项的系数、指数(以空格分隔)

第一行:加/减法计算后,结果多项式A的第二项的系数、指数(以空格分隔)

...

第p行:加/减法计算后,结果多项式A的第n项的系数、指数(以空格分隔) (假设结果多项式的项数为p)

 

(多项式之间以空行分隔,如果多项式只包含“0”,则相应的多项式输出"0 0",不包含引号。)

 

输入范例 :

167 3 -22 9 5 -80 1 7 8 17 10038 22 -91 7 8

输出范例 :

7 03 1-22 79 85 17-8 100

8 122 7-9 8

7 0-5 1-44 718 85 17-8 100

 

#include #include #include #include #include #include using namespace std; typedef struct node { int factor;//系数 int index;//指数 struct node* next; node(int fa) :factor(fa),next(0){} }Node; void my_print(Node* head) { Node* p = head->next; if(!p)printf("%d %d\n",0, 0); while (p) { printf("%d %d\n", p->factor, p->index); p = p->next; } } //创建带头节点的链表 Node* createList(int n) { int i,val; vector node_vec; Node* head = new Node(0); node_vec.push_back(head);//头结点 for (i = 0; i < n; i++) { scanf("%d", &val); node_vec.push_back(new Node(val)); } for (i = 1; i next = node_vec[i]; scanf("%d", &val); node_vec[i]->index = val; } return head; } Node* my_fun(Node* la, Node* lb, int mode) { Node* pa=la->next, * pb=lb->next,* res=la,*res_tail=la; int temp; while (pa && pb) { if (pa->index == pb->index) { if (!mode)//+ temp = pa->factor + pb->factor; else//- temp = pa->factor - pb->factor; if (temp) { res_tail->next = pa; pa->factor = temp; res_tail = pa; } pa = pa->next; pb = pb->next; } else if (pa->index < pb->index) { res_tail->next = pa; res_tail = pa; pa = pa->next; } else { res_tail->next = pb; res_tail = pb; if (mode)pb->factor = -pb->factor; pb = pb->next; } } res_tail->next = NULL; if (pa) res_tail->next = pa; while (pb) { res_tail->next = pb; res_tail = pb; if (mode)pb->factor = -pb->factor; pb = pb->next; } return res; } int main() { int mode;//0 加 1减 scanf("%d", &mode); int n, i; scanf("%d", &n); Node* la = createList(n); scanf("%d", &n); Node* lb = createList(n); my_print(la); cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有