一、实验原理
利用链式存储实现存储一元多项式,并计算两个一元多项式之和。一元多项式由系数和指数构成。
1、create()存储系数指数:首先建立一个头结点headLnode,从headLnode->next开始存入系数和指数,只有系数是0时,才表示这个多项式的结束,否则每次把系数和指数存入结点后,就把指针向后移动一个接着存入,直到输入的系数是0为止。返回的是一个带头结点的链表
2、Print()输出链表:只要当前指针指向的结点不是空,就把系数和指数输出,直到系数为0为止
3、Compare()比较指数大小:根据这个结果确定先插入哪个结点
4、AddLine()链表相加:先让hc=lc=ha,即相当于给hc和lc创建了一个头结点,然后以后通过比较得到的结点都插入了hc为头结点的链表中。
比较:
(1)ha为空,hb不为空,直接return(hb)
(2)ha和hb都不空,通过比较指数大小,决定插入hc的顺序
二、参考程序
#include<stdio.h>
#include<stdlib.h>
#define NULL 0
typedef struct Lnode
{
int coef; //定义系数变量
int exp; //定义指数变量
struct Lnode *next; //定义指针next变量
} Lnode,*LinkList;
/*建立多项式列表*/
LinkList create()
{
int n;
LinkList headLnode;
LinkList head;
LinkList p1,p2; //定义p1,p2指针
n=0;
printf("请输入多项式(输入的数必须是整数,指数须从小到大依次输入,系数为零表示多项式结束)\n");
p1=p2= ( LinkList)malloc(sizeof(Lnode)); /*开辟一个新单元*/
scanf("%d%d",&p1->coef,&p1->exp); /*录入多项式*/
headLnode=(