数据结构(C语言)-案例分析(顺序表实现多项式运算)

顺序表实现多项式运算

//多项式基本运算 
#include"stdio.h"
#include"stdlib.h"
#define MAX 100
typedef int Data;
typedef struct{
	Data data[MAX];
	int Length;
}SeqList;
SeqList A;
SeqList B;
SeqList C; 
void InitList(SeqList *A,SeqList *B,SeqList *C){
	A->Length=0;
	B->Length=0;
	C->Length=0;
} 
void CreateList(SeqList *A,SeqList *B,int n,int x){
	int i;
	printf("输入多项式A的系数:"); 
	for(i=0;i<n;i++){
		scanf("%d",&A->data[i]);
	}
	A->Length=i;
	
	printf("\n输入多项式B的系数:");
	for(i=0;i<x;i++){
		scanf("%d",&B->data[i]);
	}
	B->Length=i;
	printf("\n多项式A的系数:");
	for(i=0;i<A->Length;i++){
		printf("%3d",A->data[i]);
	}
	printf("\n多项式B的系数:");
	for(i=0;i<B->Length;i++){
		printf("%3d",B->data[i]);
	}
}
void Addition(SeqList *A,SeqList *B,SeqList *C){
	int i; 
	if(A->Length>B->Length){
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
			if(i!=B->Length){
			    C->data[i]=A->data[i]+B->data[i];
			}else{
				C->data[i]=A->data[i];
			}
		}
	}
	else if(B->Length>A->Length){
		C->Length=B->Length;
		for(i=0;i<B->Length;i++){
			if(i!=A->Length){
			    C->data[i]=A->data[i]+B->data[i];
			}else{
				C->data[i]=B->data[i];
			}
		}
	}
	else{
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
	        C->data[i]=A->data[i]+B->data[i];
		}
	}
	printf("A+B得:");
	for(i=0;i<C->Length;i++){
       printf("%3d",C->data[i]);		
	}	
} 
void Division(SeqList *A,SeqList *B,SeqList *C){
	int i; 
	if(A->Length>B->Length){
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
			if(i!=B->Length){
			    C->data[i]=A->data[i]/B->data[i];
			}else{
				C->data[i]=A->data[i];
			}
		}
	}
	else if(B->Length>A->Length){
		C->Length=B->Length;
		for(i=0;i<B->Length;i++){
			if(i!=A->Length){
			    C->data[i]=A->data[i]/B->data[i];
			}else{
				C->data[i]=B->data[i];
			}
		}
	}
	else{
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
	        C->data[i]=A->data[i]/B->data[i];
		}
	}
	printf("A/B得:");
	for(i=0;i<C->Length;i++){
       printf("%3d",C->data[i]);		
	}	
} 
void Multiplication(SeqList *A,SeqList *B,SeqList *C){
	int i; 
	if(A->Length>B->Length){
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
			if(i!=B->Length){
			    C->data[i]=A->data[i]*B->data[i];
			}else{
				C->data[i]=A->data[i];
			}
		}
	}
	else if(B->Length>A->Length){
		C->Length=B->Length;
		for(i=0;i<B->Length;i++){
			if(i!=A->Length){
			    C->data[i]=A->data[i]*B->data[i];
			}else{
				C->data[i]=B->data[i];
			}
		}
	}
	else{
		C->Length=A->Length;
		for(i=0;i<A->Length;i++){
	        C->data[i]=A->data[i]*B->data[i];
		}
	}
	printf("A*B得:");
	for(i=0;i<C->Length;i++){
       printf("%3d",C->data[i]);		
	}	
} 
void Menu(){
	printf("\n          多项式计算");
	printf("\n--------------------------------------");
	printf("\n              1--创建多项式           ");
	printf("\n              2--加法计算             ");
	printf("\n              3--除法计算             ");
	printf("\n              4--乘法计算             ");
	printf("\n              0--退出                 ");
	printf("\n--------------------------------------");
	printf("\n请输入菜单号(0-4):"); 
}
int main(){
	SeqList A;
	SeqList B;
	SeqList C;
	int n,x,loc;
	char ch1,ch2,a;
	ch1='y';
		while(ch1=='y'||ch1=='Y'){
		Menu();
		scanf("%c",&ch2);
		getchar();
		switch(ch2){
			case '1':
			  	InitList(&A,&B,&C);
			  	printf("输入第一个多项式系数的个数:");
			  	scanf("%d",&n);
			  	printf("输入第二个多项式系数的个数:");
				scanf("%d",&x);
				CreateList(&A,&B,n,x);
				break;
			case '2':
			     Addition(&A,&B,&C);
				 break;
			case '3':
			     Division(&A,&B,&C);
				 break;
			case '4':
			     Multiplication(&A,&B,&C);
				 break;
			case '0':
			    ch1='n';
				break;
			default:
			    printf("输入有误!!!!");  
		}
		if(ch2!='0'){
			printf("\n按回车键继续,按任意键返回主菜单!\n");
			a=getchar();
			if(a!='\xA'){
				getchar();
				ch1='n';
			}
		}	
	}
}


  • 2
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值