多项式的加法链表c语言,用链表实现多项式相加并输出显示(2)

当前位置:我的异常网» C语言 » 用链表实现多项式相加并输出显示

用链表实现多项式相加并输出显示(2)

www.myexceptions.net  网友分享于:2013-02-24  浏览:197次

[/code]

(1)其中有一段多项式相加函数没有按题目要求“可以不按升幂或降幂顺序排列输入”写,能力所限,只写了个一般性的程序,而且也得不到结果。请大家帮帮指出上面的错误。(C环境下无法输入,C++下可以输入却输不出结果)

(2)上述程序如果按照题目要求写程序,是不是需要添加有关排序函数?怎么写?请高手指教修正

请赐教二点疑惑,谢谢!!

------解决方案--------------------

以前写过一个全部按降幂排列的,lz拿去看看吧(系数和指数是整型的)

//要求:多项式按降幂排列

#include

#include

struct node

{

int coef;//系数

int exp;//指数

node * next;

};

node * h1=NULL;//第一个多项式的头指针

node * h2=NULL;//第二个多项式的头指针

node * insert(int c,int e)//创建一个系数为c,指数为e的结点,并返回其地址

{

node * newnode=new node;//创建新结点

newnode-> coef=c;//系数等于c

newnode-> exp=e;//指数等于e

newnode-> next=NULL;

return newnode;

}

node * create(node * h)

{

int coef;

int exp;

char c;

cout < < "请输入系数: ";

cin> > coef;

cout < < "请输入指数: ";

cin> > exp;

h=insert(coef,exp);

cout < < "是否输入完毕?(Y/N) ";

cin> > c;

if(c== 'y '||c== 'Y ')

{

return h;//如果输入完毕,返回头指针地址

}

else

{

h-> next=create(h-> next);//否则递归建立下一个结点

return h;//返回头指针地址

}

}

node * copy(node * source)//将一个结点的内容复制到另一个结点,并返回该结点地址

{

if(source!=NULL)//如果源结点不为空

{

node * des=new node;//创建新结点

des-> coef=source-> coef;//新结点的系数等于源结点的系数

des-> exp=source-> exp;//新结点的指数等于源结点的指数

des-> next=NULL;

return des;//返回新结点地址

}

return NULL;

}

void print(node * head)//输出头指针为head的多项式链表

{

node * h=head;

if(h==NULL)

{

cout < < "0 ";//如果链表为空,输出0

}

else

{

while(h-> next!=NULL)//否则,当其下一个结点不为空时

{

if(h-> exp==0)//如果指数为0,即常数

{

if(h-> coef> 0)//如果系数大于0

{

cout < coef;//输出系数

}

else

{

cout < < "\b " < coef;//否则,退一格(消除前面的+号),输出系数

}

}

else if(h-> exp==1)//否则,如果指数为1

{

if(h-> coef> 0)//如果系数大于0

{

if(h-> coef==1)//如果系数等于1

{

cout < < "x " < < "+ ";//输出x+

}

else

{

cout < coef < < "*x " < < "+ ";//否则,输出相应的系数

}

}

else

{

if(h-> coef==-1)//否则,如果系数等于-1

{

cout < < "\b " < < "-x " < < "+ ";//退一格,输出-x

}

else

{

cout < < "\b " < coef < < "*x " < < "+ ";//否则,退一格,输出相应的系数

}

}

}

else//否则,指数大于1

{

if(h-> coef> 0)//如果系数大于0

{

if(h-> coef==1)//如果系数等于1

{

cout < < "x " < exp < < "+ ";

}

else

{

cout < coef < < "*x " < exp < < "+ ";

}

}

else

{

if(h-> coef==-1)//否则,如果系数等于-1

{

cout < < "\b " < < "-x " < exp < < "+ ";

}

else

{

cout < < "\b " < coef < < "*x " < exp < < "+ ";

}

}

文章评论

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值