SHAOXIAOJ正在加载中...

1643: 线性表-两个多项式之和(Hard ver)

金币值:2 定数:10 时间限制:1.000 s 内存限制:128 M
正确:2 提交:5 正确率:40.00% 命题人:
点赞量:0 收藏量:0 题目类型:程序 知识点: 数据结构-线性表

题目描述

一元多项式的求和操作在链式存储结构上的实现。其中函数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位),如果多项式之和为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