yi_yuan_duo_xiang_shi_cheng_fa.zip

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 3KB
    文件大小
  • zip
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 1
    下载次数
  • 2013-03-10 19:17
    上传日期
利用数据结构中的链表,交一无多项式和乘法表达出来!
yi_yuan_duo_xiang_shi_cheng_fa.zip
  • yi_yuan_duo_xiang_shi_cheng_fa.cpp
    9.6KB
内容介绍
/**************************************************************************/ /* 一元多项式的乘法 */ /**************************************************************************/ #include<iostream> #include<conio.h> //使程序中可用键盘输入函数 #include<stdlib.h> //使程序中可用系统标准输出函数 using namespace std; struct Node { float xsh; //结点类型,系数 int zhsh; //指数 }; typedef Node yydxsh_Polynomial; struct LNode { yydxsh_Polynomial data; //链表类型 LNode *next; }; typedef LNode* Link; //申明各功能函数 void Dxsh_CreateLink(Link &Lian,int n); //创建含有n个链表类型结点的项,即创建一个n项多项式 void Dxsh_PrintList(Link Lian); //输出链表 int JudgeIfZhshSame(Link PA,Link e); //判断指数是否与多项式中已存在的某项相同 void Copy_yydxsh_Link(Link &PC,Link PA); //把一个链表的内容复制给另一个链表 void yydxsh_PolyAdd(Link &PC,Link PA,Link pb); //将两个一元多项式相加 void yydxsh_PolyMultiply(Link &PC,Link PA,Link pb); //将两个一元多项式相乘 void Destroy_yydxsh_Link(Link &Lian); //销毁链表类型结点 int ComPAreIfNum(int i); //判断输入的整数是不是为1到3的数字,只有1-3的选择 //创建含有n个链表类型结点的项,即创建一个n项多项式 void Dxsh_CreateLink(Link &Lian,int n) { if(Lian!=NULL) { Destroy_yydxsh_Link(Lian); } Link p,newp; Lian=new LNode; Lian->next=NULL; (Lian->data).zhsh=-1; //创建头结点 p=Lian; for(int i=1;i<=n;i++) { newp=new LNode; cout<<"请输入第"<<i<<"项的系数和指数:"<<endl; cout<<"系数:"; cin>>(newp->data).xsh; cout<<"指数:"; cin>>(newp->data).zhsh; if(newp->data.zhsh<0) { cout<<"您输入有误,指数不允许为负值!"<<endl; delete newp; i--; continue; } newp->next=NULL; p=Lian; if(newp->data.xsh==0) { cout<<"系数为零,重新输入!"<<endl; delete newp; i--; continue; } while((p->next!=NULL)&&((p->next->data).zhsh<(newp->data).zhsh)) { p=p->next; //p指向指数最小的那一个 } if(!JudgeIfZhshSame( Lian, newp)) { newp->next=p->next; p->next=newp; } else { cout<<"输入的该项指数与多项式中已存在的某项相同,请重新创建一个正确的多项式"<<endl; delete newp; Destroy_yydxsh_Link(Lian); Dxsh_CreateLink(Lian,n); //创建多项式没有成功,递归调用重新创建 break; } } } //输出链表 void Dxsh_PrintList(Link Lian) { Link p; if(Lian==NULL||Lian->next==NULL) cout<<"该一元多项式为空!"<<endl; else { p=Lian->next; //项的系数大于0的5种情况 if((p->data).xsh>0) { if((p->data).zhsh==0) cout<<(p->data).xsh; //如果指数为0则直接输出系数 else if((p->data).xsh==1&&(p->data).zhsh==1) cout<<"x"; //如果系数和指数均为1,则输出x else if((p->data).xsh==1&&(p->data).zhsh!=1) cout<<"x^"<<(p->data).zhsh; //如果系数为1,指数不为1,则输出x的指数次方 else if((p->data).zhsh==1&&(p->data).xsh!=1) cout<<(p->data).xsh<<"x"; //如果系数不为1,指数为1,则输出系数倍x else cout<<(p->data).xsh<<"x^"<<(p->data).zhsh; //如果系数和指数都不为1,则输出系数乘以x的指数次方 } //项的系数小于0的5种情况 if((p->data).xsh<0) { if((p->data).zhsh==0) cout<<(p->data).xsh; //如果指数为0,则直接输出系数 else if(p->data.xsh==-1&&p->data.zhsh==1) cout<<"-x"; //如果系数为-1,指数为1,则输出-x else if(p->data.xsh==-1&&p->data.zhsh!=1) cout<<"-x^"<<p->data.zhsh; //如果系数为-1,指数不为1,则输出x的指数次方的相反数 else if(p->data.zhsh==1) cout<<p->data.xsh<<"x"; //如果指数为1,则输出系数倍x else cout<<(p->data).xsh<<"x^"<<(p->data).zhsh; //如果指数不为1,系数不为-1,则输出系数倍x的指数次方 } p=p->next; while(p!=NULL) { if((p->data).xsh>0) //系数大于0时输出情况 { if((p->data).zhsh==0) cout<<"+"<<(p->data).xsh; else if((p->data).zhsh==1&&(p->data).xsh!=1) cout<<"+"<<(p->data).xsh<<"x"; else if((p->data).zhsh==1&&(p->data).xsh==1) cout<<"+"<<"x"; else if((p->data).xsh==1&&(p->data).zhsh!=1) cout<<"+"<<"x^"<<(p->data).zhsh; else cout<<"+"<<(p->data).xsh<<"x^"<<(p->data).zhsh; } if((p->data).xsh<0) //系数小于0时输出情况 { if((p->data).zhsh==0) cout<<(p->data).xsh; else if(p->data.xsh==-1&&p->data.zhsh==1) cout<<"-x"; else if(p->data.xsh==-1&&p->data.zhsh!=1) cout<<"-x^"<<p->data.zhsh; else if(p->data.zhsh==1) cout<<p->data.xsh<<"x"; else cout<<(p->data).xsh<<"x^"<<(p->data).zhsh; } p=p->next; } } cout<<endl; } //判断指数是否与多项式中已存在的某项相同 int JudgeIfZhshSame(Link Lian,Link e) { Link p; p=Lian->next; while(p!=NULL&&(e->data.zhsh!=p->data.zhsh)) p=p->next; if(p==NULL) return 0; else return 1; } //把一个链表的内容复制给另一个链表 void Copy_yydxsh_Link(Link &PC,Link PA) { Link p,q,r; PC=new LNode; PC->next=NULL; r=PC; p=PA; while(p->next!=NULL) { q=new LNode; q->data.xsh=p->next->data.xsh; q->data.zhsh=p->next->data.zhsh; r->next=q; q->next=NULL; r=q; p=p->next; } } //将两个一元多项式相加 void yydxsh_PolyAdd(Link &PC,Link PA,Link pb) { Link p1,p2,p,pd; Copy_yydxsh_Link(p1,PA); Copy_yydxsh_Link(p2,pb); PC=new LNode; PC->next=NULL; p=PC; p1=p1->next; p2=p2->next; while(p1!=NULL&&p2!=NULL) { if(p1->data.zhsh<p2->data.zhsh) { p->next=p1; p=p->next; p1=p1->next; } else if(p1->data.zhsh>p2->data.zhsh) { p->next=p2; p=p->next; p2=p2->next; } else { p1->data.xsh=p1->data.xsh+p2->data.xsh; //如果指数相同,运算时系数想加 if(p1->data.xsh!=0) { p->next=p1; p=p->next; p1=p1->next; p2=p2->next; } else { pd=p1; p1=p1->next; p2=p2->next; delete pd; //如果系数为0,则删除该项 } } } if(p1!=NULL) { p->next=p1; } if(p2!=NULL) { p->next=p2; } } //清屏函数 void Clear() { system("PAuse"); system("cls"); }//让用户重新选择 //将两个一元多项式相乘 void yydxsh_PolyMultiply(Link &PC,Link PA,Link pb) { Link p1,p2,p,pd,newp,t; PC=new LNode; PC->next=NULL; p1=PA->next; p2=pb->next; while(p1!=NULL) { pd=new LNode; pd->next=NULL; p=new LNode; p->next=NULL; t=p; while(p2) { newp=new LNode; newp->next=NULL; newp->data.xsh=p1->data.xsh*p2->data.xsh; //系数相乘 newp->data.zhsh=p1->data.zhsh+p2->data.zhsh; //指数相加 t->next=newp; t=t->next; p2=p2->next; } yydxsh_PolyAdd(pd,PC,p); Copy_yydxsh_Link(PC,pd); p1=p1->next; p2=pb->next; Destroy_yydxsh_Link(p); Destroy_yydxsh_Link(pd); } } //销毁链表类型结点 void Destroy_yydxsh_Link(Link &Lian) { Link p; p=Lian->next; while(p) { Lian->next=p->next; delete p; p=Lian->next; } delete Lian; Lian=NULL; } //菜单函数 void Menu() { cout<<""<<endl; cout<<endl; cout<<"------------------------------------------------------"<<endl; cout<<" 一元多项式的四则运算 "<<endl; cout<<"------------------------------------------------------"<<endl; cout<<" 1 创建两个一元多项式 "<<endl; cout<<" 2 两个一元多项式相乘
评论
    相关推荐
    • 数据库课程设计
      一个数据库课程设计,access管理工具实现,用的是窗体!
    • 数据库课程设计
      数据库课程设计十分完整有需要的请下载啊谢谢
    • 数据库课程设计
      广东工业大学数据库课程设计,可视化界面连接数据库,delphi7
    • 数据库课程设计
      数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述 数据库课程设计实验及其描述
    • 数据库课程设计
      数据库课程设计》由周爱武、汪海威、肖云编著,遵循数据库课程设计的具体要求,独立于具体的数据库教材,从实际应用系统的需求着手,引导读者逐步完成数据库设计全过程,重点讲解数据库系统的需求分析、概念设计、...
    • 数据库课程设计
      数据库课程设计人事管理系统 数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计人事管理系统数据库课程设计...
    • 数据库课程设计
      数据库课程设计,基于visual basic自助银行管理系统,界面很清爽,实用。同学都说好,所以就上传了!!!
    • 数据库课程设计
      数据库课程设计 里面有详细的文档资料 包含数据库一切的图 以及生成的数据库表文件 期末得分为优秀
    • 数据库课程设计
      可以作为数据库课程设计,也可以作为Java的课程设计,内容全面。本资源转载的,非本人原创。用于交流学习,特此申明!
    • 数据库课程设计
      数据库课程设计蓝天大学学生管理系统 2.商店信息管理系统 3.实验室机房收费管理系统 4.图书馆资料检索系统 5.企业库存管理系统 6.仓库管理系统 7.工程项目管理系统 8.教材管理系统 9.企业人事管理系统 10.企业财务...