链表,多项式求和
来源:互联网 发布:义乌管家婆软件jhgjp 编辑:程序博客网 时间:2024/06/08 12:25
一道普通的大作业题我竟然折腾了这么久,汗颜啊!
#include <iostream>using namespace std;class Poly;class node{ private: int coef;//系数 int exp;//指数 node *next; friend Poly; friend void calculate(Poly &x,Poly &y);};class Poly{ private: node* head; public: void creat(); void print(); void Delete(); node* Returnhead(); void print2();};void Poly::creat(){ node *tail,*p; int a,b; cout<<"请输入多项式"<<endl; p=new node; p->exp=0; p->coef=0; p->next=NULL; head=tail=p; while(cin>>a>>b&&b>0) { p=new node; p->coef=a; p->exp=b; p->next=NULL; tail->next=p; tail=p; }}node* Poly::Returnhead(){ if (head->next) return head; else return NULL;}void calculate(Poly &x,Poly &y){ node *p1,*p,*q,*temp; p1=x.Returnhead(); p=p1->next; q=y.Returnhead()->next; while(q&&p) { if (p->exp==q->exp) { p->coef+=q->coef; if (p->coef==0) { p1->next=p->next; delete(p); p=p1->next; } else { p1=p; p=p->next; } q=q->next;//不管怎么样,q1都要向后移 } else if (p->exp<q->exp) { temp=new node; temp->coef=q->coef; temp->exp=q->exp; p1->next=temp; temp->next=p; q=q->next; } else { p1=p; p=p->next; } } while(q) { node*temp; temp=new node; temp=q; p1->next=temp; p1=temp; q=q->next; }}void Poly::print(){ node*p; p=head->next; if (p->coef==1) cout<<"x"<<'^'<<p->exp; else if (p->coef==-1) cout<<"-x"<<'^'<<p->exp; else if (p->coef==0) p=p->next; else cout<<p->coef<<'x'<<'^'<<p->exp; p=p->next; while(p) { if (p->coef==1) cout<<'+'<<'x'<<'^'<<p->exp; else if (p->coef==-1) cout<<"-x"<<'^'<<p->exp; else if (p->coef==0) p=p->next; else if (p->coef>0) cout<<'+'<<p->coef<<'x'<<'^'<<p->exp; else cout<<p->coef<<'^'<<p->exp; p=p->next; }}void Poly::print2(){ node *p; p=head->next; while(p) { if (p->coef==1) cout<<'+'<<'x'<<'^'<<p->exp; else if (p->coef==-1) cout<<"-x"<<'^'<<p->exp; else if (p->coef==0) p=p->next; else if (p->coef>0) cout<<'+'<<p->coef<<'x'<<'^'<<p->exp; else cout<<p->coef<<'^'<<p->exp; p=p->next; }}void Poly::Delete(){ node *p=head,*q; while(p) { q=p->next; delete(p); p=q; } cout<<"内存已释放成功"<<endl;}int main(){ Poly A,B; A.creat(); cout<<"A的表达式为:"; A.print(); cout<<endl; B.creat(); cout<<"B的表达式为:"; B.print(); cout<<endl; cout<<"计算的多项式结果为:"<<endl; A.print(); B.print2(); cout<<"="; calculate(A,B); if (A.Returnhead()==NULL) cout<<0<<endl; else A.print(); cout<<endl; A.Delete(); return 0;}
0 0
- 链表,多项式求和
- 多项式求和 链表
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 多项式求和
- 数据结构例程——线性表顺序存储的应用
- 对指定的目录进行递归获取递归过程所有的java文件的路径。
- mysql数据库SQL语句介绍
- 打印流printstream
- Apple 如何知道你使用了私有API
- 链表,多项式求和
- HDU - 3853(简单概率dp , 注意边界)
- Properties类用于配置的
- 删除目录从里往外删除
- 设计模式1--单例模式
- Javascript的this用法
- ubuntu shell不兼容
- mod_jk负载均衡 Request Entity Too Large
- 资源记录