线性结构——一元多项式求导

马上线性结构(C语言)就要考试了,感觉都没怎么学,赶快把实验重新敲一下。

要求:

  1. 输入格式说明:以指数递降方式输入多项式非零系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。
  2. 输出格式说明:以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格
  3. 样例输入与输出:
    序号输入输出
    13 4 -5 2 6 1 -2 012 3 -10 1 6 0
    25 20 -7 4 3 1100 19 -28 3 3 0
    31000 00 0
    4-1000 1000 999 0-1000000 999

#include <iostream>
using namespace std;

typedef struct{ //项的表示
    float coef; //系数
    int expn;   //指数
}term,ElemType;

typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LNode,*LinkList;

typedef LinkList polynomial;    //用代表头节点的有序链表表示多项式

//存储多项式
polynomial CreatPolyn(){
    //创建一个空链表
    LinkList P = (LNode*)malloc(sizeof(LNode));
    P->next = NULL;
    //输入数据
    cout<<"请输入多项式:"<<endl;
    LinkList p = P;
    char ch;
    while(ch!='\n'){
        LinkList s = (LNode*)malloc(sizeof(LNode));
        cin>>s->data.coef>>s->data.expn;
        cin.get(ch);
        p->next = s;
        s->next = NULL;
        p = s;
    }
    return P;
}

//打印输出多项式
void PrintPolyn(LinkList P){
    LinkList p = P->next;
    cout<<p->data.coef<<" "<<p->data.expn;
    p = p->next;
    while(p&&p->data.coef){
        cout<<" "<<p->data.coef<<" "<<p->data.expn;
        p = p->next;
    }
}

//计算求导后的多项式
polynomial ComputePolyn(LinkList P){
    LinkList S = (LNode*)malloc(sizeof(LNode));
    S->next = NULL;
    LinkList p = P->next;
    LinkList t = S;
    while(p){
    LinkList s = (LNode*)malloc(sizeof(LNode)); //临时节点必须放在循环里
        s->data.coef = p->data.coef*p->data.expn;
        s->data.expn = p->data.expn-1<0?0:p->data.expn-1;
        t->next = s;
        s->next = NULL;
        t = s;
        p = p->next;
    }
    return S;
}

int main(){
    LinkList P = CreatPolyn();      //原多项式
    LinkList S = ComputePolyn(P);   //求导后的多项式
    cout<<"求导后的多项式:"<<endl;
    PrintPolyn(S);                  //输出多项式
}

刚学的很新鲜,如有不足还请大佬们指正。

  • 4
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值