CHENZ
#include
using namespace std;
//待会可以尝试用list容器去写
struct lnode
{
int zhishu,xishu;
lnode *next;
};
lnode* creat(lnode* L)
{
lnode* p = L;
lnode *s;
int m,n;
do
{
cin >> m >> n;
s = new lnode;
s->xishu = m;
s->zhishu = n;
p->next = s;
p=s;
}while((m!=0)&&(n!=-1));
return L;
}
int display(lnode* L)
{
lnode* p;
if(L->next->zhishu==-1)
cout<
else
for(p=L->next;p->zhishu>=0;p=p->next)
{
if(p->xishu>0&&p!=L->next)
cout << "+";
if(p->xishu==1&&p->zhishu>0);
else if(p->xishu==-1&&p->zhishu>0)
cout << "-";
else
cout << p->xishu;
if(p->zhishu>0)
cout << "X" ;
if(p->zhishu>1)
cout << "^" <zhishu ;
}
cout << endl;
}
lnode* xiangjia(lnode *L,lnode *L1,lnode* L2)
{
lnode *p=L1->next;
lnode *q=L2->next;
lnode *r=L;
lnode *s;
while((p->zhishu>=0)||(q->zhishu>=0))
{
s = new lnode;
s->next = NULL;
//r->next = new lnode;
//r=r->next;
if(p->zhishu>q->zhishu)
{
s->xishu=p->xishu;
s->zhishu=p->zhishu;
p=p->next;
r->next = s;
r = r->next;
}
else if(p->zhishuzhishu)
{
s->xishu=q->xishu;
s->zhishu=q->zhishu;
q=q->next;
r->next = s;
r = r->next;
}
else
{
s->xishu=p->xishu+q->xishu;
s->zhishu=p->zhishu;
p=p->next;
q=q->next;
if(s->xishu != 0)
{
r->next = s;
r = r->next;
}
else
delete(s);
}
}
r->next = new lnode;
r=r->next;
r->xishu=0;
r->zhishu=-1;
return L;
}
int main()
{
int m,n;
lnode *L1;
lnode *L2;
lnode *L;
L1 = new lnode;
L1 = creat(L1);
display(L1);
L2 = new lnode;
L2 = creat(L2);
display(L2);
L = new lnode;
L = xiangjia(L,L1,L2);
display(L);
}
最后附上 王道数据结构给的头插法,微插法建立链表的代码