多项式相加
主要是利用了类似于排序的思想,从第一个开始找,直到找到合适的位置,如果幂是一样的,则直接相加,否则就插入一个新的节点。
// ConsoleApplication2.cpp : Defines the entry point for the console application.
//author:jwfy
//time:2014-1-13 pm 4:19
#include "stdafx.h"
#include <iostream>
#include <cstdlib>
#include <cstring>
using namespace std;
typedef struct Node
{
int x; // 底数
int num; // 幂
Node *next;
}Node,*Lnode;
void Add(Node& node,int x,int num)
{
Lnode p=node.next,q=new Node,r=&node;
q->next=NULL;
q->num=num;
q->x=x;
if(!p) // 表示一个元素都没有
{
q->next=node.next;
node.next=q;
return ;
}
while(p)
{
if(p->num>=num)
break;
r=p;
p=p->next;
}
if(p) //
{
if(p->num==num)
p->x+=x;
else
{
q->next=r->next;
r->next=q;
}
return ;
}
q->next=r->next;
r->next=q;
}
void Prin(Node node)
{
Lnode p=node.next;
for(;p;p=p->next)
{
cout<<p->x<<"x^"<<p->num;
if(p->next)
cout<<"+";
}
cout<<endl;
}
int main()
{
Node head;
head.next=NULL;
Add(head,2,4);
Add(head,3,2);
Add(head,2,8);
Add(head,1,4);
Prin(head);
return 0;
}