实验报告——线性表应用
一、实验目的
用单链表储存一元多项式,并实现两个多项式的相加运算。 二、实验内容
1. 先创建链表,存储多项式; 2. 输出多项式; 3. 两个多项式相加; 4. 输出多项式。
三、程序代码 #include
//一元多项式链式储存的节点结构 typedef struct Polynode {
float coef; int exp;
struct Polynode * next; } Polynode , * Polylist;
//建立一元多项式的链表 Polylist polycreate() {
Polynode * head,* rear,* s; float c; int e;
head=(Polynode* )malloc(sizeof(Polynode)); rear=head;
scanf(\ while(c!=0) {
s=(Polynode * )malloc(sizeof(Polynode)); s->coef=c; s->exp=e; rear->next=s; rear=s;
scanf(\ }
rear->next=NULL; return(head); }
//输出多项式
1
void print(Polynode*L) {
Polynode*p; p=L->next; printf(\ if(p&&p->coef!=0)
printf(\ while(p->next!=NULL) {
if((p->next->coef)>0&&p) printf(\ else printf(\ p=p->next;
printf(\ } }
//多项式相加
void polyadd(Polylist polya,Polylist polyb) {
Polynode*p,*q,*tail,*temp; int sum; p=polya->next; q=polyb->next; tail=polya;
while (p!=NULL&&q!=NULL) {
if(p->exp
{tail ->next=p; tail=p;p=p->next;} else if (p->exp==q->exp); {sum=p->coef+q->coef; if(sum!=0) {p->coef=sum; tail->next=p;tail=p; p=p->next;
temp=q;q=q->next;free(temp); } else {
temp=p;p=p->next;free(temp); temp=q;q=q->next;free(temp); } }
2
{tail ->next=q;tail=q; q=q->next;} }
if(p!=NULL) tail->next=p; else
tail->next=q; }
void main() {
Polynode*a,*b;
printf(\输入a的系数和指数:\\n\ a = polycreate(); print(a); printf(\
printf(\输入b的系数和指数:\\n\ b = polycreate(); print(b); printf(\ polyadd(a,b);
printf(\两个多项式的和为:\\n\ print(a); }
四、实验结果
五、实验过程中遇到的问题及处理方法
程序运行时,在中文状态下输入“,”回车后就不能再输入了,应在英文状态下输入“,”。
3