以下是把lb指数项跟la指数项相等的相加到la中,把不相同的指数项插入la链表的表尾
(随便附加一个问题:我现在学(c版)数据结构,数据结构中的线性表、栈和队列、串的一些算法,使用相应的容器功能也可以实现,使用容器写代码比较简短、也没有那么复杂,是不是选择容器也程序好一点?)
#include<iostream>
using namespace std;
struct Lnode
{
float xu; //系数
int zu; //指数
struct Lnode *next;
};
Lnode *scanf()
{
int x;
Lnode *head,*pn,*pt;
head=0;
cin>>x;
while(x!=0)
{
pn=new Lnode;
pn->xu=x;
cin>>pn->zu;
if(head==0)
{
head=pn;
pt=pn;
}
else
{
pt->next=pn;
pt=pn;
}
cin>>x;
}
pt->next=0;
return head;
}
Lnode *add(Lnode *lahead,Lnode *lbhead)
{
Lnode *lap,*lbp;
int x=0;
lbp=lbhead;
while(lbp!=0)
{
lap=lahead;
while(lap!=0)
{
if(lbp->zu==lap->zu)
{
lap->xu=lap->xu+lbp->xu;
x=1;
}
if(x==0)
{
//如何把lb链表中跟la链表中不相同的,插入la链表的表尾呢??
}
lap=lap->next;
}
return lahead;
}
void pri(Lnode *head)
{
Lnode *p=head;
while(p!=0)
{
cout<<p->xu<<" "<<p->zu<<" ";
p=p->next;
}
}
int main()
{
Lnode *lahead,*lbhead;
cout<<"请输入第一个一元多项la的系数及指数:";
lahead=scanf();
cout<<endl;
cout<<"请输入第二个一元多项lb的系数及指数:";
lbhead=scanf();
cout<<endl;
cout<<"第一个一元多项la的系数及指数:";
pri(lahead);
cout<<endl;
cout<<"第二个一元多项lb的系数及指数:";
pri(lbhead);
cout<<endl;
cout<<"相加及插入后的la系数及指数:";
lahead=add(lahead,lbhead);
pri(lahead);
cout<<endl;
return 0;
}