当前位置:我的异常网» 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 < < "+ ";
}
}
文章评论