⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ww.cpp

📁 数据结构C语言实现一元多项式运算
💻 CPP
字号:
#include <iostream> 
using namespace std; 
typedef struct LNode 
{int coef; //多项式系数 
int expn; //多项式指数 
struct LNode *next; 
}LNode,*linklist; 
//---------创建带头结点的多项式链表-------- 
linklist creat() 
{ linklist head,s,p,pre; 
int coef; 
int expn; 
head=new LNode; //表头结点 
head->next=NULL; 
cout<<"输入系数:"<<endl; 
cin>>coef; 
cout<<"输入指数:"<<endl; 
cin>>expn; 
while (coef!=0) 
{ 
cout<<"当系数等于零的时候结束!"<<endl; 
s=new LNode; //生成新结点 
s->coef=coef; 
s->expn=expn; 
s->next=NULL; 
pre=head; //插入到有序的多项式链表中去 
p=head->next; 
while (p!=NULL && p->expn >s->expn) 
{ 
pre=p; 
p=p->next;//pre 和p分别后移 
} 
s->next=p; 
pre->next=s;//s插入到pre与p之间,生成降序。 
cout<<"读下一项"<<endl; 
cout<<"输入系数:"<<endl; 
cin>>coef; 
cout<<"输入指数:"<<endl; 
cin>>expn; 
} 
return head; 
} 
//-----------输出多项式链表------------- 
void print(linklist head) 
{ linklist p; 
p=head->next; 
while (p) 
{ cout<<p->coef<<"X^"<<p->expn<<"+"; 
p=p->next;//一个一个往下走 
} 
} 
//-------------多项式相加---------------- 
linklist add(linklist pa,linklist pb) 
{linklist p,q,pre,r,y,head; 
int x; 
head=pa; 
p=pa->next; //p,q 指向头接点的下一个接点,即多项式的第一个接点 
q=pb->next; 
pre=pa; //pre指向p的前驱 
while((p!=NULL)&&(q!=NULL)) //处理多项式的相加的问题 
{ 
if (p->expn > q->expn) 
{ pre=p; 
p=p->next;//后移 
} 
else if (p->expn==q->expn) 
{ x=p->coef+q->coef; 
if(x!=0) //系数相加不为0的情况 
{ 
p->coef=x; 
pre=p; 
p=p->next; 
} 
else //系数相加为0的情况 
{ 
pre->next=p->next; 
delete p; 
p=pre->next; 
} 
r=q; 
q=q->next; 
delete r; 
} 
else //p->expn < q->expn 的情况 
{ 
y=q->next;//q->next保存到y 
q->next=p; 
pre->next=q; 
pre=q; 
q=y; 
} 
} 
if(q!=NULL) 
pre->next=q; 
delete pb; 
return head; 
} 

linklist qufu()//取负函数 
{linklist t; 
while(t) 
{t->coef=-t->coef; 
t=t->next; 
} 
return t; 
} 



//----主程序------ 
void main() 
{ 
linklist a,b,c,d; 
cout<<"请输入第一个多项式:"<<endl; 
a=creat(); //创建多项式链表a 
cout<<"请输入第二个多项式:"<<endl; 
b=creat(); //创建多项式链表b 
cout<<"您输入的第一个多项式为:"<<endl; 
print(a); 
cout<<endl; 
cout<<"您输入的第二个多项式为:"<<endl; 
print(b); 
cout<<endl; 
cout<<"两多项式相减加后为:"<<endl; 
c=add(a,b); //计算多项式a+b 
print(c); 
cout<<endl; 
cout<<"两多项式相减后为:"<<endl; 
b=qufu();//先对b取负,再相加,相当于相减 
d=add(a,b); 
print(d); 
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -