复习数据结构,延伸了课本中的内容,实现了多项式的相加和相乘。
#include<iostream>
using namespace std;
typedef struct Node{ //构造存储多项式的单链表
int coefficient;
int index;
struct Node *next;
}Node,*Link;
class Polynomial{ //定义多项式链表类
private:
Link c;
public:
void InitLink(Link p); //链表初始化
void Add(Link p1,Link p2); //多项式相加
Link Mul(Link p1,Link p2); //多项式相乘
Link CreateLink(Link p,int data1,int data2); //建立链表保存多项式
void PrintLink(Link p); //打印多项式的链表
void Menu(); //doc窗口菜单
void GetLink(Link p1); //输入
void SortLink(Link q); //指数从大到小排序
void Combine(Link p); //合并多项式中的同类项
Link DeepCopy(Link p); //深度复制
};
void Polynomial::InitLink(Link p){
p->next=NULL;
}
void Polynomial::Add(Link p1,Link p2){
SortLink(p1);
SortLink(p2);
Node *m,*n,*pre,*rep;
pre=p1;
m=p1->next;
n=p2->next;
while(m!=NULL&&n!=NULL){
if(m->index<n->index){
rep=n->next;
n->next=m;
pre->next=n;
pre=n;
n=rep;
}
else if(m->index>n->index){
pre=m;
m=m->next;
}
else{
m->coefficient+=n->coefficient;
if(m->coefficient==0){
Node *temp1,*temp2;
temp1=m;
temp2=n;
pre->next=m->next;
m=m->next;
delete temp1;