线性表的应用——一元多项式的代数运算

/*
*	程序功能:一元多项式的代数运算
*	程序作者:Yannis Zhao
*
*/

#include<stdio.h>
#include<malloc.h>

//数据元素数据结构
typedef struct{		
	float coef;		//系数
	int expn;		//指数
}Term;

//多项式数据结构
typedef struct PolyList{
	Term term;
	struct PolyList *next;
}Polynomial;

void ShowMenu();//显示菜单
//Term结构的基本操作
float GetCoef(const Term t);	//返回数据项系数
int GetExpn(const Term t);		//返回数据项指数
int CompExpn(const Term t1,const Term t2); //比较数据项指数大小,按第一个系数小于、等于、大于第二个系数分别返回-1、0、1
float AddItem(Term *t1,const Term *t2);//两项相加,t1保存结果,返回系数
float SubtractItem(Term *t1,const Term *t2);//两项相减,t1保存结果,返回系数
Term MultiplyItem(Term t1,Term t2);//两项相乘,t1保存结果

//PolyList结构的基本操作
Polynomial* CreatePolyList();	//建立多项式
void DestroyList(Polynomial *p);//销毁多项式
void BubbleSort(Polynomial *p);//旗袍排序
void PrintPolynomial(Polynomial *p);//打印多项式
int length(Polynomial *p);//计算项数
int ChangePolynomial(Polynomial *p); //修改多项式 0--succeed 1--failure
int InsertItem(Polynomial *p,Term t);//插入项,会与已有项叠加 0--succeed 1--failure
void DeleteItem(Polynomial *p,Term t);//删除项
void AddPolyList(Polynomial *p1,const Polynomial *p2);//多项式相加,p1保存结果
void SubtractPolyList(Polynomial *p1,Polynomial *p2);//多项式相减,p1保存结果
void MultiplyPolyList(Polynomial *p1,const Polynomial *p2,Polynomial *pResult);//多项式相乘,另存结果

int main()
{
	Polynomial *p1=NULL,*p2=NULL;
	Term t;
	int choice=0;

	ShowMenu();
	while(scanf("%d",&choice))
	{
		switch(choice)
		{
		case 1:
			p1=CreatePolyList();
//			BubbleSort(p1);
			PrintPolynomial(p1);
			ShowMenu();
			break;
		case 2:
			p2=CreatePolyList();		
			PrintPolynomial(p2);
			ShowMenu();
			break;
		case 3:
			if(ChangePolynomial(p1)!=0)
			{
				printf("Polynomial changed!\n");
				BubbleSort(p1);
				PrintPolynomial(p1);
			}
			else
			{
				printf("Uncaught error!\n");
			}
			ShowMenu();
			break;
		case 4:
			if(ChangePolynomial(p2)!=0)
			{
				printf("Polynomial changed!\n");
				Pr
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值