65,211
社区成员
发帖
与我相关
我的任务
分享
#include <iostream>
using namespace std;
const int N =10;
struct term {
int coef;
int exp;
}; //可以不使用
struct LNode
{
int coef;
int exp;
struct LNode *next;
};
typedef LNode *LinkList;
//一个多项式长度
int Len(LinkList L)
{
LinkList p = L;
int i = 0;
while(p->next != NULL) {p=p->next;i++;}
return i;
}
//创建链表
void CreatePoly(LinkList &L)
{
LinkList s;
int i;
L=new LNode;
if(NULL == L) cout<<"Bad memory allocated!.."<<endl;//自己添加
L->next=NULL;
int n;
cout <<"请输入多项式的项数n(n <N):" <<endl;
cin>>n;
cout <<"请输入多项式的每项的系数和指数:" <<endl;
for(i=0;i <n;i++)
{
cout <<"第" << i <<"项" <<"coef,exp " <<endl;
s=new LNode;
cin>>s->coef>>s->exp;
s->next=L->next;
L->next=s;
}
}
//多项式相加
void addpolyn(LinkList La,LinkList Lb)
{
LinkList pa,pb,q;
pa=La->next;
pb=Lb->next;
while(pa!=NULL&&pb!=NULL)
{
if(pa->exp > pb->exp)
{
q=pb;
La->next=q;
q->next=pa;
pb=pb->next;
}
else if(pa->exp < pb->exp)
{
pa=pa->next;
}
else
{
pa->coef+=pb->coef;
pa=pa->next;
pb=pb->next;
}
while(pa!=NULL)
{
pa=pa->next;
}
while(pb!=NULL)
{
pa->next=pb;
//pa=pb;
pa=pa->next;
}
}
}
//排序
void sort(LinkList &L)
{
int n = Len(L);
if(n == 0 || n == 1) return;
LinkList p = L->next->next,q,r = L;
// r = p->next;
q = L->next;
for(int i = 1;i < n;i++)
{
for(int j = 1;j < n+1-i;j++)
{
if(q->exp > p->exp)
{
r->next = p;
q->next = p->next;
p->next = q;
}
else q = p,p = p->next;
}
r = L;
q = L->next;
p = q->next;
}
}
//输出
void Display(LinkList L)
{
LinkList p;
p=L->next;
while(p!=NULL){
cout <<p->coef <<" " <<p->exp <<" ";
p=p->next;
}
}
//主函数
int main()
{
LNode* node01 = new LNode;
CreatePoly(node01);
cout<<Len(node01)<<endl;
Display(node01);
sort(node01);
Display(node01);
return 0;
}
void addpolyn(LinkList &La,LinkList &Lb)
{
LinkList pa,pb,q;
pa=La->next;
pb=Lb->next;
while (pa!=NULL&&pb!=NULL)
{
if (pa->exp>pb->exp)
{
q=pb;
La->next=q;
q->next=pa;
pb=pb->next;
}
else if (pa->exp <pb->exp)
{
pa=pa->next;
}
else
{
pa->coef+=pb->coef;
pa=pa->next;
pb=pb->next;
}
while (pa!=NULL)
{
pa=pa->next;
}
while (pb!=NULL)
{
pa->next=pb; // pa是NULL,pa->next?不可访问。
//pa=pb;
pa=pa->next;
}
}
}