for (int i = 1; i <= m; i++) { Polyn p = (Polyn)malloc(sizeof(struct Polynomial));//新建节点p printf("请输入第%d项的系数与指数(中间用空格隔开):", i); scanf("%f%d", &p->coef, &p->expn); //新建立一个节点p,用来存储读入的系数coef和指数expn if (p->coef == 0) free(p); //将系数为0的节点释放掉 else { Polyn q1, q2; //q1和q2指针一前一后 q1 = head; q2 = head->next; while (q2 != NULL && p->expn < q2->expn) //p的指数小于q2的指数 ,将q1,q2两个指针后移 { q1 = q2; q2 = q2->next; } if (q2 != NULL && p->expn == q2->expn)//如果p和q2的指数相同,即 p->expn == q2->expn则进行两个节点的和并 { q2->coef += p->coef; //合并两项 if (q2->coef == 0) { q1->next = q2->next; free(q2); //将系数为0的节点释放掉 } free(p); //将节点p释放掉 } else { p->next = q2;//q1>p>q2,将p插入q1和q2之间 q1->next = p; } } } return head; }
时间: 2024-04-20 20:27:22 浏览: 22
这是一个多项式相加的程序,通过输入多项式的系数和指数来新建一个节点p,并将p插入到多项式链表中。如果某个节点的系数为0,则将其释放掉。如果p和链表中的某一个节点指数相同,则将它们的系数相加并合并为一个节点,如果相加后的系数为0,则将该节点释放掉。如果p的指数在链表中的某两个节点之间,则将p插入到这两个节点之间。最后返回多项式链表的头节点head。
相关问题
Polyn p; int i; int sum = 0,t;
这是 C++ 代码,其中 `Polyn` 是一个自定义的数据类型或类名(可能表示“多项式”)。这条语句定义了三个变量:`p` 是一个 `Polyn` 类型的对象,`i` 是一个整型变量,`sum` 和 `t` 都是整型变量并初始化为 0。
具体来说,`p` 是一个用于存储多项式的对象,`i` 可能在后续的代码中用于循环计数器,`sum` 和 `t` 可能在后续的代码中用于存储某些计算的结果。由于这些变量都没有被赋值,因此它们的初始值是未定义的,可能是任意值。
Polyn CreatPolyn(Polyn head, int m) { head = (Polyn)malloc(sizeof(struct Polynomial));//将头指针指向建立的结构体 head->next = NULL; for (int i = 1; i <= m; i++) { Polyn p = (Polyn)malloc(sizeof(struct Polynomial));//新建节点p printf("请输入第%d项的系数与指数(中间用空格隔开):", i); scanf("%f%d", &p->coef, &p->expn); //新建立一个节点p,用来存储读入的系数coef和指数expn if (p->coef == 0) free(p); //将系数为0的节点释放掉 else { Polyn q1, q2; //q1和q2指针一前一后 q1 = head; q2 = head->next; while (q2 != NULL && p->expn < q2->expn) //p的指数小于q2的指数 ,将q1,q2两个指针后移 { q1 = q2; q2 = q2->next; } if (q2 != NULL && p->expn == q2->expn)//如果p和q2的指数相同,即 p->expn == q2->expn则进行两个节点的和并 { q2->coef += p->coef; //合并两项 if (q2->coef == 0) { q1->next = q2->next; free(q2); //将系数为0的节点释放掉 } free(p); //将节点p释放掉 } else { p->next = q2;//q1>p>q2,将p插入q1和q2之间 q1->next = p; } } } return head; }
这是一个建立多项式的函数,输入一个头指针 head 和一个整数 m,返回一个建立好的多项式。在函数中,首先新建一个头结点 head,然后循环 m 次,每次输入一个系数和指数,新建一个节点 p,存储系数和指数,如果系数为 0,则释放节点 p,否则,将节点 p 插入到多项式中,在插入的过程中,将节点 p 与多项式中的节点进行比较,如果指数相同,则将两个节点的系数相加,并将其中系数为 0 的节点释放掉,如果指数不同,则将节点 p 插入到多项式中。最后返回头指针 head。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![application/x-rar](https://img-home.csdnimg.cn/images/20210720083606.png)