/*
* 程序功能:一元多项式的代数运算
* 程序作者: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
线性表的应用——一元多项式的代数运算
最新推荐文章于 2023-03-26 22:47:00 发布