用链表实现一元多项式的加法运算
2016-02-26 19:13
447 查看
#include<iostream> using namespace std; struct Node { int coef; int exp; Node * next; Node(){coef=0;exp=0;next=nullptr;} }; class Polyn { private: //int len; public: int len; void create(); int insert(int c,int x); void traverse(); Polyn& operator=(const Polyn& l); Polyn operator+(Polyn& l); Node * head; }; void Polyn::create() { Node * p=new Node; head=p; len=0; } int Polyn::insert(int c,int x) { Node * p=new Node; p->coef=c; p->exp=x; Node *tmp=head; while(tmp->next!=nullptr) { if(x<tmp->next->e<span style="font-family: Arial, Helvetica, sans-serif;">xp) {p->next=tmp->next;tmp->next=p;len++;return -1;}</span>
else if(x==tmp->next->exp) {tmp->next->coef+=c;return 0;} else {tmp=tmp->next;} } tmp->next=p; len++; return 1; } Polyn& Polyn::operator=(const Polyn& l) { Node * tmp=l.head; this->create(); while(tmp->next!=nullptr) { this->insert(tmp->next->coef,tmp->next->exp); tmp=tmp->next; } return *this; } Polyn Polyn::operator+(Polyn& l) { Node * tmp=l.head; Polyn m; m.create(); m=*this; while(tmp->next!=nullptr) { m.insert(tmp->next->coef,tmp->next->exp); tmp=tmp->next; } return m; } void Polyn::traverse() { Node * tmp=head; int count=len; while(tmp->next!=nullptr) { if(tmp->next->exp==0) cout<<tmp->next->coef; else cout<<tmp->next->coef<<"x^"<<tmp->next->exp; tmp=tmp->next; count--; if(count!=0) cout<<"+"; } } int main() { Polyn L; L.create(); L.insert(1,0); L.insert(2,1); L.insert(3,1); L.insert(2,5); //Polyn L2=L; Polyn L2; L2=L; L.traverse();cout<<endl; L2.traverse();cout<<endl; //cout<<&L<<endl; //cout<<&L2<<endl; L.insert(2,4); L.traverse();cout<<endl; L2.traverse();cout<<endl; Polyn L3; L3=L+L2; L.traverse();cout<<endl; L2.traverse();cout<<endl; L3.traverse();cout<<endl; }
我写的程序中,将链表的长度设为一个公有成员,有风险!
相关文章推荐
- Matlab中取模(mod)与取余(rem)的区别
- iOS 开发 -- Swift (十一) 便利构造函数
- 字符串匹配的Boyer-Moore算法
- win10 下如何安装 使用vc6.0
- iOS UI-popoverController
- java多态
- C语言可变参函数的实现
- bzoj2658: [Zjoi2012]小蓝的好友(mrx)
- Android APK如何签名
- 学硕和专硕
- 多路查找树(B树)
- CodeForces 613 A. Peter and Snow Blower(计算几何)
- Activity间传递数据
- [Leetcode]@python 97. Interleaving String
- 反序列化多个XML文件后出现Unity卡死
- 深入理解Java虚拟机笔记---方法调用http://www.tuicool.com/articles/vQVzIje
- 3个问题
- 推荐阅读dietlibc源代码
- dwxmauommau
- C++基础::文件流(二)