【数据结构-C语言】一元多项式计算器

本文介绍了一种使用单链表存储稀疏一元多项式的方法,并详细阐述了解决多项式相乘及从降幂转为升幂输出的技术方案。通过工具函数实现多项式相乘,利用线性表辅助完成升幂排序。
摘要由CSDN通过智能技术生成
#include <stdio.h>
#include <stdlib.h>

typedef struct PolyNode *Polynomial;//存储结构为:带头节点的单链表
struct PolyNode {
   
    int coef;//多项式系数
    int expon;//多项式指数
    Polynomial next;//指向下一个节点
};
typedef Polynomial PList;

typedef struct array{
   //建立一个线性表,用来作为中转将单链表逆序
    int *data;//存单链表中多项式的数据,下标表示多项式的指数
    int size;//线性表的大小
    int length;//线性表的长度
}Array;

PList PolyRead();//读入一个多项式
Array CreatArray();//初始化一个线性表
PList IncreasingPower(PList p);//将一个降幂的多项式升幂排序
PList Add(PList p1,PList p2);//两个多项式相加
PList Sub(PList p1,PList p2);//两个多项式相减
PList Mult(PList p1,PList p2);//两个多项式相乘
void PrintPoly(PList p);//输出多项式
void FreeLink(PList p);//清空链表
PList MultTool(PList p1,PList p2);//乘法所需用到的一个工具,用来实现一个多项式中的某一项与另一个多项式做乘法运算

int main()
{
   
    printf("欢迎来到一元多项式计算器\n");
    printf("请输入您要进行的操作(如+、-、*):\n");
    char ope;
    scanf("%c",&ope);//输入操作符(如+、-、*)
    PList p1,p2,pap,psp,pmp;
    p1=PolyRead();//创建第一个多项式
	p2=PolyRead();//创建第二个多项式

    switch (ope){
   
        case '+':
            printf("两个多项式相加的结果是:\n");
            pap=Add(p1,p2);
            printf("降幂:");
            PrintPoly(pap);
            pap=IncreasingPower(pap);//将一个降幂的多项式升幂排序
            printf("升幂:");
            PrintPoly(pap);
            break;
        case '-':
            printf("两个多项式相减的结果是:\n");
            psp=Sub(p1,p2);
            printf("降幂:");
            PrintPoly(psp);
            psp=IncreasingPower(psp);//将一个降幂的多项式升幂排序
            printf("升幂:");
            PrintPoly(psp);
            break;
        case '*
  • 17
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值