| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1539 人关注过本帖
标题:[求助]一元稀疏多项式的加减法
只看楼主 加入收藏
泪洒太平洋
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2006-1-2
收藏
 问题点数:0 回复次数:1 
[求助]一元稀疏多项式的加减法

数据结构:一元稀疏多项式的加减法
基本功能要求:
1.输入并建立二个多项式,每个多项式至少八项.用带表头结点的单链表存储多项式.
2.输出多项式,输出形式为整数序列:n,c1,e1,c2,e2,......cn,en,其中n是多项式的项数,ci,ei分别为第i项的系数和指数.序列按指数降序或升序排列.
3.多项式a和b相加,建立多项式a+b,输出相加的多项式
4.多项式a+b相减,建立多项式a-b,输出相减的多项式

搜索更多相关主题的帖子: 多项式 加减法 
2006-01-02 20:13
mydeargod
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-3-24
收藏
得分:0 
[分享]
#include <iostream.h>
#include<stdlib.h>
typedef int elemtype;
typedef struct SLNode
{
elemtype coef;
elemtype exp;
struct SLNode *Next;
}slnodetype;
int MergeSL(slnodetype *la,slnodetype *lb,slnodetype **lc);
int CreateSL(slnodetype *la,int n);
void DisplaySL(slnodetype *la,char *comment);
void main()
{
slnodetype *la,*lb,*lc,*p;
int m,n;
if((la=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
la->Next=NULL;
if((lb=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
lb->Next=NULL;
cout<<"How many points in la:"<<" ";
cin>>m;
cout<<"How many points in lb:"<<" ";
cin>>n;
cout<<"\nEnter la的系数和指数:\n";
CreateSL(la,m);
cout<<"\nEnter lb的系数和指数:\n";
CreateSL(lb,n);
MergeSL(la,lb,&lc);
DisplaySL(lc,"The result:");
}
int MergeSL(slnodetype *la,slnodetype *lb,slnodetype **lc)
{
slnodetype *pa,*pb,*pc;
int t;
if((*lc=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pa=la->Next;
pb=lb->Next;
pc=*lc;
while(pa&&pb)
{
if(pa->exp==pb->exp)
{
t=pa->coef+pb->coef;
if(t!=0)
{
if((pc->Next=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pc=pc->Next;
pc->coef=t;
pc->exp=pa->exp;
}
pa=pa->Next;
pb=pb->Next;
}
else if(pa->exp<pb->exp)
{
if((pc->Next=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pc=pc->Next;
pc->exp=pa->exp;
pc->coef=pa->coef;
pa=pa->Next;
}
else
{
if((pc->Next=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pc=pc->Next;
pc->exp=pb->exp;
pc->coef=pb->coef;
pb=pb->Next;
}
}
while(pa!=NULL)
{
if((pc->Next=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pc=pc->Next;
pc->coef=pa->coef;
pc->exp=pa->exp;
pa=pa->Next;
}
while(pb!=NULL)
{
if((pc->Next=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
pc=pc->Next;
pc->coef=pb->coef;
pc->exp=pb->exp;
pb=pb->Next;
}
pc->Next=NULL;
return 1;
}
int CreateSL(slnodetype *la,int n)
{
int i;
slnodetype *p,*q;
q=la;
for(i=1;i<=n;i++)
{
if((p=(slnodetype *)malloc(sizeof(slnodetype)))!=NULL)
cin>>(p->coef)>>(p->exp);
q->Next=p;
q=p;
}
q->Next=NULL;
return 1;
}
void DisplaySL(slnodetype *la,char *comment)
{
slnodetype *p;
p=la->Next;
cout<<"结果如下:"<<endl;
while(p)
{
cout<<p->coef<<" "<<p->exp<<endl;
p=p->Next;
}
cout<<endl;
}
2006-04-11 18:21
快速回复:[求助]一元稀疏多项式的加减法
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.024084 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved