完美的数据结构大作业之选。
C语言+链表 实现。
不用提前知道多项式项数,可以自动排序,可以合并同类项,可以进行加法、乘法运算。
//#include<stdio.h>
//#include<stdlib.h>
#include"stdafx.h"
#include<malloc.h>
#include<Windows.h>
//#define ERROR 0;
//#define OVERFLOW 0;
typedef struct Polyn {
int expn, coef;
Polyn* next;
}*P;
P CreatePolyn(Polyn *P); // 创建节点
Polyn* SelectSort(Polyn *Pa); // 选择排序
Polyn* MergePolyn(Polyn *Pa); //合并同类项
void PrintPolyn(Polyn *P); // 打印多项式
int cmp(int a, int b); // 比较函数
P AddPolyn(P Pa, P Pb); // 多项式相加
P MultiPolyn(P Pa, P Pb); // 多项式相乘
/*------------------------Dome---------------------------------*/
int main()
{
P Pa, Pb, Pc, Pd;
Pa = (Polyn *)malloc(sizeof(Polyn));
Pb = (Polyn *)malloc(sizeof(Polyn));
Pa = CreatePolyn(Pa);
Pb = CreatePolyn(Pb);
Pd = MultiPolyn(Pa, Pb);
Pc = AddPolyn(Pa, Pb);
system("pause");
return 0;
}
/*-----------------------打印多项式------------------------------*/
void PrintPolyn(Polyn* P)
{
Polyn* q = P->next;
//若多项式为空
printf("\n");
while (q->next != NULL)
{
if (q->coef>0) printf("%d*x^%d+", q->coef, q->expn);
else if (q->coef < 0) {
printf("(%d)*x^%d+", q->coef, q->expn);
}
else print