- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验用链表实现多项式加减乘
#includestdio.h
#includemalloc.h
#includestdlib.h
#includemath.h
#define ERROR 0
#define POLY sizeof(Polynomial)
typedef struct Polynomial /*用单链表存储多项式的结点结构*/
{
int coef; /*多项式的系数*/
int exp; /*指数*/
struct Polynomial *next;/*next是struct Polynomial类型中的一个成员,
它又指向struct Polynomial类型的数据,以此建立链表*/
}Polynomial;
Polynomial * CreatPolyn(void)
/*指针函数,返回指针类型;用尾插法建立一元多项式的链表的函数*/
{
Polynomial *head,*tail,*s;
int c,e;
head=(Polynomial *)malloc(POLY);
/*建立多项式的头结点,为头结点分配存储空间*/
if(!head)
exit(ERROR);
tail=head;
/*tail指针始终动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/
printf(系数:);
scanf(%d,c); /*输入系数*/
printf(指数: );
scanf(%d,e); /*输入指数*/
if(c==0)
{
printf(请重新输入);
return NULL;
}
else
{
while(c!=0) /*输入系数为0时,表示多项式的输入结束*/
{
s=(Polynomial *) malloc(POLY); /*申请新结点*/
s-coef=c; /*申请新结点后赋值*/
s-exp=e; /*申请新结点后赋值*/
tail-next=s; /*做尾插,插入新结点*/
tail=s; /*tail始终指向单链表的表尾*/
printf(系数:);
scanf(%d,c);
printf(指数: );
scanf(%d,e);
}
tail-next=NULL; /*将表的最后一个结点的next置NULL,以示表结束*/
return(head);
}
}
void DestroyPolyn(Polynomial *p)//删除多项式
{
Polynomial *q;
while(p-next!=NULL)
{
q=p-next;
free(p);
p=q;
}
}
int PolyLength(Polynomial *p)
{
Polynomial *q;
int i=0;
q=p;
while(q-next!=NULL)
{
q=q-next;
i++;
}
return(i);
}
void Order(Polynomial *p)/*多项式的升幂排序*/
{
Polynomial *q;
int a,b,i=0;
q=p;
while(q-next!=NULL)
{
if(q-expq-next-exp)
{
a=q-coef;
b=q-exp;
q-coef=q-next-coef;
q-exp=q-next-exp;
q-next-coef=a;
q-next-exp=b;
}
q=q-next;
i++;
}
}
void PaiXu(Polynomial *p)//重复调用升幂排序函数
{
int j;
for(j=1;jPolyLength(p);j++)
Order(p);
}
void AddPolyn(Polynomial *polya, Polynomial *polyb)
/*两个一元多项式相加,将和多项式存放在多项式polya中,并将多项式ployb删除*/
{
Polynomial *p,*q,*he,*temp;
int sum;
p=polya-next;/*令p指向polya多项式链表中的第一个结点*/
q=polyb-next;/*令q指向polyb多项式链表中的第一个结点*/
he=polya; /*令he指向和多项式polya*/
while(p!=NULLq!=NULL)
/*当两个多项式均未扫描结束时,执行以下操
文档评论(0)