📄 ploynode.cpp
字号:
//temp=pb;
pb=pb->next;
//delete temp;
}
else
{ //如果系数和为零,则删除结点pa与pb,并将指针指向下一个结点
// temp=pa;
pa=pa->next;
// delete temp;
// temp=pb;
pb=pb->next;
// delete temp;
}
break;
//若p指数大于q指数
case 1:
pre->next=pb;//pa结点不动,将pb结点加入到和多项式中,把系数改为负数
pre=pre->next;
pre->coef=-pre->coef;
// temp=pb;
pb=pb->next;
// delete temp;
break;
}
}
//多项式polya中还有剩余,则将剩余的结点加入到和多项式中
if(pa)
{
pre->next=pa;
return head;
}
//将polyb的结点加入到和多项式中
while(pb)
{
pre->next=pb;
pre->coef=-pre->coef;
// temp=pb;
pb=pb->next;
// delete temp;
}
return head;
}
//////////////////////////////
//输出函数,打印出一元多项式
void print_poly(node* q)
{
if(q->next)
{
// cout<<"输入的一元多项式是:"<<endl;
while(q->next)
{
q=q->next;
if(q->next)
{
cout<<"("<<q->coef<<")*"<<"x"<<"^"<<q->exp<<"+";
}
else
{
cout<<"("<<q->coef<<")*"<<"x"<<"^"<<q->exp<<endl;
}
}
}
else
{
cout<<"您未输入一元多项式!"<<endl;
}
return;
}
//////////////////////////////
//销毁一元多项式
void DestroyPoly(node *p)
{
node *t;
while(p->next)
{
t=p;
p=t->next;
delete t;
}
}
////////////////////////////
//删除一元多项式菜单函数
void DeletePoly()
{
Delete_Poly_menu();
char str;
while(1)
{
cin>>str;
switch(str)
{
case 'q':case 'Q':case 'c':case 'C':
char_flag=str;
return;
break;
case 'A':case 'a':
if(polya->next)
{
print_poly(polyb);
DestroyPoly(polya);
polya->next=NULL;
cout<<"删除A成功!"<<endl;
}
else
{
cout<<"一元多项式A不存在,删除失败!"<<endl;
}
break;
case 'B':case 'b':
if(polyb->next)
{
print_poly(polyb);
DestroyPoly(polyb);
polyb->next=NULL;
cout<<"删除B成功!"<<endl;
}
else
{
cout<<"一元多项式B不存在,删除失败!"<<endl;
}
break;
default:
cout<<"输入不合法!"<<endl;
break;
}
cout<<"请重新选择:";
}
}
/////////////////////////////////////////
//一元多项式加减操作菜单函数
void AddOrSub()
{
Add_OR_Sub_menu();
node *sum;
char str;
sum=new node;
if(!sum)
{
cout<<"创建失败!"<<endl;
cout<<"请按任意键退出程序!"<<endl;
cin>>str;
char_flag='q';
return;
}
sum->coef=0.0;
sum->exp=-1;
sum->next=NULL;
while(1)
{
cin>>str;
switch(str)
{
case 'q':case 'Q':case'c':case'C':
char_flag=str;
return;
break;
case'a':case'A':
if(polya->next)
{
if(polyb->next)
{
sum=polyadd(polya,polyb);
}
else
{
cout<<"一元多项式B未创建!"<<endl;
}
}
else
{
cout<<"一元多项式A未创建!"<<endl;
}
cout<<endl;
cout<<endl;
print_poly(polya);
cout<<'+';
print_poly(polyb);
print_poly(sum);
break;
case 's':case 'S':
if(polya->next)
{
if(polyb->next)
{
sum=polySub(polya,polyb);
}
else
{
cout<<"一元多项式B未创建!"<<endl;
}
}
else
{
cout<<"一元多项式A未创建!"<<endl;
}
cout<<endl;
cout<<endl;
print_poly(polya);
cout<<'-';
print_poly(polyb);
// print_poly(sum);
break;
default:
cout<<"输入不合法!"<<endl;
break;
}
cout<<"请重新选择:";
}
}
////////////////////////////////////////////////
//一元多项式创建菜单函数
node* CreatePolyNode(char m)
{
node* head;
head=new node;
char str;
if(!head)
{
cout<<"创建"<<m<<"头节点失败!"<<endl;
cout<<"请按任意键结束程序!"<<endl;
cin>>str;
char_flag='q';
return head;
}
head->next=NULL;
head->coef=0.0;
head->exp=-1;
cin_polynode_menu(m);
while(1)
{
cin>>str;
switch(str)
{
case'b':case'B':
cin_Poly_menu(m);
head=create();
cout<<"输入的一元多项式是:"<<endl;
print_poly(head);
cout<<"按任意键返回上个菜单!"<<endl;
cin>>str;
cin_polynode_menu(m);
break;
case 'Q':case 'q':case 'c':case 'C':
char_flag=str;
return head;
break;
case 'D':case 'd':
if(head->next)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(head);
DestroyPoly(head);
head->next=NULL;
cout<<"删除"<<m<<"成功"<<endl;
}
else
{
cout<<m<<"未创建!删除失败!"<<endl;
}
break;
case'p':case'P':
if(head->next)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(head);
}
else
{
if('a'==m ||'A'==m)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(polya);
}
if('b'==m ||'B'==m)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(polyb);
}
else
{
cout<<"未创建你所要的一元多项式!"<<endl;
}
}
break;
default:
cout<<"你输入的不合法!"<<endl;
break;
}
cout<<"请重新选择:"<<endl;
}
return head;
}
//////////////////////////
//一元多项式打印菜单函数
void print_PolyNode()
{
char str;
print_menu();
cin>>str;
while(1)
{
switch(str)
{
case'a':case'A':
if(polya->next)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(polya);
}
else
cout<<"一元多项式A未创建!"<<endl;
break;
case'b':case'B':
if(polyb->next)
{
cout<<"输入的一元多项式是:"<<endl;
print_poly(polyb);
}
else
cout<<"一元多项式B未创建!"<<endl;
break;
case 'c':case'C':case 'q':case'Q':
char_flag=str;
return;
break;
default:
cout<<"输入的字符不合理"<<endl;
break;
}
cout<<"请重新选择:";
cin>>str;
}
}
///////////////////////////
//主函数
int main()
{
bool flag=true;
// char str;
//初始化操作
//InitNode(polya);
polya=new node;
if(!polya)
{
cout<<"初始化polya失败,程序结束!"<<endl;
return -1;
}
polya->coef=0.0;
polya->exp=-1;
polya->next=NULL;
//如果失败,就结束程序
//InitNode(polyb);
polyb=new node;
if(!polyb)
{
cout<<"初始化polyb失败,程序结束!"<<endl;
return -1;
}//如果失败,就结束程序
polyb->coef=0.0;
polyb->exp=-1;
polyb->next=NULL;
Main_menu();//输出主菜单
cin>>char_flag;//输入字符
while(flag)
{ //输入的字符判断
switch(char_flag)
{
case 'A':case'a':
polya=CreatePolyNode('A');//创建A
// print_poly(polya);
// cin>>str;
break;
case 'B':case 'b':
polyb=CreatePolyNode('B');//创建B
// print_poly(polyb);
// cin>>str;
break;
case 'd':case 'D'://删除
DeletePoly();
break;
case 's':case 'S'://加或减
AddOrSub();
break;
case 'q':case 'Q'://退出
Quit_menu();
return 0;
break;
case 'p':case 'P':
print_PolyNode();
break;
default:
cout<<"输入的字符不合理,请重新选择:";
break;
}
switch(char_flag)
{
case 'c':case'C':
Main_menu();//输出主菜单
break;
case 'Q':case 'q':
Quit_menu();
return 0;
break;
}
//cout<<"输入的字符合理,请重新输入"<<endl;
//cin>>char_flag;
cin>>char_flag;//输入字符
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -