1643: 线性表-两个多项式之和(Hard ver)
金币值:2
定数:10
时间限制:1.000 s
内存限制:128 M
解决:3
提交:8
正确率:37.50% 命题人:
题目描述
一元多项式的求和操作在链式存储结构上的实现。其中函数initList用于完成链表的初始化;locateElem用于寻找待插入结点的前驱结点;listInsert用于结点的插入;addMutiPloy用于实现计算两个一元多项式的和;printList的功能是从单链表头部开始顺序打印单链表中的结点元素。
#include <stdio.h>
#include <stdlib.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int Status;
typedef struct LNode {
double coef;
int expn;
struct LNode *next;
} LNode, *linkList;
Status initList(linkList &L);
linkList locateElem (linkList L,int e);
void listInsert(linkList &L,double coef,int expn);
void addMutiPloy(linkList &pa,linkList pb);
void printList(linkList L);
int main(void) {
linkList pa,pb;
int n,i,expn;
double coef;
initList(pa);
initList(pb);
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%lf%d",&coef,&expn);
listInsert(pa,coef,expn);
}
scanf("%d",&n);
for(i=1; i<=n; i++) {
scanf("%lf%d",&coef,&expn);
listInsert(pb,coef,expn);
}
addMutiPloy(pa,pb);
printList(pa);
return 0;
}
Status initList(linkList &L) {
L=(linkList)malloc(sizeof(LNode));
if(!L) exit(OVERFLOW);
L->next=NULL;
return OK;
}
void listInsert(linkList &L,double coef,int expn) {
linkList p=(linkList)malloc(sizeof(LNode));
if(!p) exit(OVERFLOW);
p->coef=coef;
p->expn=expn;
p->next=NULL;
linkList t=locateElem(L,expn);
p->next=t->next;
t->next=p;
}
/*仅提交以下代码*/
linkList locateElem (linkList L,int e) {
}
void addMutiPloy(linkList &pa,linkList pb) {
}
void printList(linkList L) {
}
输入
输入数据各行是:
第1行:第一个多项式的项数
第2行:第一个多项式的各项系数和指数,以空隔间隔
第3行:第二个多项式的项数
第4行:第二个多项式的各项系数和指数,以空隔间隔
第1行:第一个多项式的项数
第2行:第一个多项式的各项系数和指数,以空隔间隔
第3行:第二个多项式的项数
第4行:第二个多项式的各项系数和指数,以空隔间隔
输出
两多项式之和,根据指数从高到低输出(系数精确到小数后1位),如果多项式之和为0,则显示0
样例输入 复制
4
7 7 5 5 1 1 3 3
3
6 6 2 2 4 4
样例输出 复制
7.0 7
6.0 6
5.0 5
4.0 4
3.0 3
2.0 2
1.0 1