一元多项式的简单计算

问题描述:设计一个一元的简单计算器
基本要求:1、输入并建立多项式
2、输出多项式
3、两个多箱式相加,建立并输出和多项式
实现提示:可选择带头节点的单项循环链表或单链表储存多项式,头结点可存放多项式的参数

PS:用数据结构C语言

#include "stdio.h"
#include "alloc.h"
typedef struct node
{
int c,e;
struct node *next;
}pn;

/*创建链表*/
pn *create()
{
pn *p,*head;
int n;
printf("enter n:");
scanf("%d",&n);
head=malloc(sizeof(pn));
head->next=NULL;
p=head;
while(n)
{
p->next=malloc(sizeof(pn));
p=p->next;
printf("enter c e:");
scanf("%d%d",&(p->c),&(p->e));
n--;
}
p->next=NULL;
return head;
}

/*输出链表*/
void PL(pn *head)
{
pn *p;
p=head->next;
while(p)
{
printf("(%d,%d)",p->c,p->e);
p=p->next;
}
printf("\n");
}

/*释放链表*/
void freefile(pn *head)
{
pn *p;
p=head;
while(p)
{
head=head->next;
free(p);
p=head;
}
}

/*两个链表相加*/
pn *add(pn *ha,pn *hb)
{
pn *hc,*head,*pa=ha->next,*pb=hb->next;
int x;
head=malloc(sizeof(pn));
head->next=NULL;
hc=head;
while(pa&&pb)
{
if(pa->e==pb->e)
{
x=pa->c+pb->c;
if(x!=0)
{
hc->next=malloc(sizeof(pn));
hc=hc->next;
hc->c=x;
hc->e=pa->e;
}
pa=pa->next;
pb=pb->next;
}
else if(pa->e<pb->e)
{
hc->next=malloc(sizeof(pn));
hc=hc->next;
hc->c=pa->c;
hc->e=pa->e;
pa=pa->next;
}
else
{
hc->next=malloc(sizeof(pn));
hc=hc->next;
hc->c=pb->c;
hc->e=pb->e;
pb=pb->next;
}
}
if(pa==NULL)
{
while(pb)
{
hc->next=malloc(sizeof(pn));
hc=hc->next;
hc->c=pb->c;
hc->e=pb->e;
pb=pb->next;
}

}
if(pb==NULL)
{
while(pa)
{
hc->next=malloc(sizeof(pn));
hc=hc->next;
hc->c=pa->c;
hc->e=pa->e;
pa=pa->next;
}
hc->next=NULL;
return head;
}
}
main()
{
pn *ha,*hb,*hc,*hd;
clrscr();
ha=create();
PL(ha);
hb=create();
PL(hb);
hc=add(ha,hb);
PL(hc);
freefile(ha);
freefile(hb);
freefile(hc);
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-06-08
、输出多项式
3、两个多箱式相加,建
相似回答