线性表合并多项式

##利用线性表计算多项式的值

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#define Maxsize 20
typedef struct{
	int*data;
	int dlen;
	int len;	
}LinkList;
//初始化线性表 
void InitList(LinkList *L){
	L->data=(int*)malloc(Maxsize*sizeof(int));//最多只能计算十个系数长度的多项式 
	L->dlen=0;
	L->len=Maxsize;
}
//输入多项式的系数
void Insetdata(LinkList *L){
	int i,j,x;
	printf("请输入需要输入的个数再输入数据\n");
	scanf("%d",&x); 
   for(i=0;i<x;i++){
   	scanf("%d",&j);
   	L->data[i]=j;
   	L->dlen++;
   }
}
//输出多项式的系数
void printfList(LinkList *L){
	int i;
	for(i=0;i<L->dlen;i++){
		printf("[%d]\t",L->data[i]);
	}
	printf("\n");	
}
/*两个多项式系数相加*/
LinkList * SumList(LinkList *L,LinkList *H){
   LinkList*p;
   int i,j,k;
   i=L->dlen;
   j=H->dlen;
   k=0;
   if(L->dlen<=H->dlen){
    p=H;}
   else if(L->dlen>H->dlen) {
   p=L; 
   }
   while(i&&j){
   	  p->data[k]=L->data[k]+H->data[k];
		 i--;
		 j--;
		 k++; 
   }
   while(i){
   	  p->data[k]=L->data[k];
   	  i--;
   	  k++;
   	 }
   while(j){
   	  p->data[k]=H->data[k];
   	   j--;
   	   k++;
   }
       p->dlen=k;
	   return p;   
}   
/*多项式运算*/
void  AddingPolynomials(LinkList *L){
	int sum,i,x;
	sum=0;
	printf("请输入底数的值\n");
	scanf("%d",&x);
	for(i=0;i<L->dlen;i++){
	   sum=sum+L->data[i]*pow(x,i);//有指数为0的	
	}
	printf("多项式结果为:%d",sum);
}
/*销毁线性表*/
void DestryList( LinkList*L){
  free(L->data);	
}; 
int main(int argc, char *argv[]) {
	int x;
	LinkList *p;
	LinkList A,B;//创建两个线性表分别存储两个多项式的系数
	InitList(&A);
	InitList(&B); 
	Insetdata(&A);
	Insetdata(&B);
	printf("数据表A的系数:\n"); 
	printfList(&A);
	printf("数据表B的系数:\n");
	printfList(&B);
	p=SumList(&A,&B);//合并多项式的系数 
	printf("合并后多项式的系数:\n"); 
	printfList(p);
	AddingPolynomials(p);
	DestryList(&A);
	DestryList(&B); 
	return 0;
}

##运行结果
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr pan cheng

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值