一元多项式的表示及相加
提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加
前言
因为老师强烈建议我们自己动手写一下用链表存储的一元多项式。今天下午有时间,就把这个一直以来的心结给解开吧。
提示:以下是本篇文章正文内容,下面案例可供参考
一、大体思路
定义一个一元多项式结构体,结构体的数据域为系数和指数。通过尾插法实现带头结点的多项式的创建,然后比较指数大小依次存储在第三个链表中。
二、具体代码
1.结构体的定义与初始化
//定义结构体
typedef struct PloyNode{
ElemType coeff;//系数
ElemType exp;//参数
PloyNode *next;//指针变量
}PloyNode,*PloyList;
//输入链表
Status InitLinkedList(PloyList &pLHead)
{
int coeff,exp;
pLHead = (PloyList)malloc(sizeof(PloyNode));
pLHead->exp = -1;
PloyList pTemp = pLHead;
pTemp->next = NULL;
printf("请输入系数和指数(Ctrl+Z停止)\n");
while((scanf("%d %d",&coeff,&exp))!=EOF)//这种用法不熟悉的小伙伴们可以自己去查找了解一下哦
{
//将输入的系数与参数存储在新生成的节点中,通过尾插法将该节点连接到链表末端。
PloyList p = (PloyList)malloc(sizeof(PloyNode));
p->coeff = coeff;
p->exp = exp;
//以下两句就是尾插法的关键语句
pTemp->next = p;
pTemp = p;
}
pTemp->next = NULL;//遍历判空时会用到
return 0;
}
2.将两个多项式相加
Status ListAdd(PloyList p1,PloyList p2,PloyList &p3)
{
PloyList p3_temp = p3;
p1 = p1->next;
p2 = p2->next;
while