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

📄 ploynode.cpp

📁 根据提示操作,可以实现任意一元多项式相加减
💻 CPP
📖 第 1 页 / 共 2 页
字号:
				//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 + -