• 7-23 一元多项式求导 (20 分)


    7-23 一元多项式求导 (20 分)

    设计函数求一元多项式的导数。

    输入格式:

    以指数递降方式输入多项式非零项系数和指数(绝对值均为不超过1000的整数)。数字间以空格分隔。

    输出格式:

    以与输入相同的格式输出导数多项式非零项的系数和指数。数字间以空格分隔,但结尾不能有多余空格。

    输入样例:

    3 4 -5 2 6 1 -2 0
    

      

    输出样例:

    12 3 -10 1 6 0
    

      第一次做:

    #include <stdio.h>
    #include <malloc.h>
    typedef int ElemType;
    
    typedef struct LNode
    {
        ElemType real;
        ElemType index;
        struct LNode *next;
    }LNode, *LinkList;
    int main()
    {
        LinkList L;
        LNode *temp, *head;
        L = (LNode *)malloc(sizeof(LNode));
        L->next = NULL;
        head = L;
    
        int index, real;
        while(scanf("%d %d", &real, &index)!=EOF){
            temp = (LNode *)malloc(sizeof(LNode));
            temp->next = NULL;
            if(index != 0){
                temp->real = real * index;
                temp->index = index - 1;
                head->next = temp;
                head = temp;
            }
        }
        head = L->next;
        if(!head)
        printf("0 0");
        while(head){
            if(head->next == NULL)
                printf("%d %d", head->real, head->index);
            else
                printf("%d %d ", head->real, head->index);
            head = head->next;
        }
    }
    

      第二次做:

    #include<stdio.h>
    #include<stdlib.h>
    #include<malloc.h>
    typedef struct LNode
    {
        int Coef;
        int index;
        struct LNode * next;
    }LNode, *List;
    void CreatList(List &L)
    {
        L = (LNode*)malloc(sizeof(LNode));
        L->next = NULL;
        LNode *temp, *p = L;
        int coef, index;
        while(scanf("%d %d", &coef, &index)!=EOF){
            temp = (LNode*)malloc(sizeof(LNode));
            temp->next = NULL;
            temp->Coef = coef;
            temp->index = index;
            p->next = temp;
            p = temp;
        }
    }
    void Derivation(List &L)
    {
        LNode *p = L->next;
        LNode *pre = L;
        while(p != NULL){
            if(p->index != 0){
                p->Coef *= p->index;
                p->index -= 1;
            }
            else{
                pre->next = p->next;
            }
            pre = pre->next;
            p = p->next;
        }
    }
    void Output(List L)
    {
        L = L->next;
        if(L == NULL){
            printf("0 0
    ");
            return ;
        }
        while(L != NULL){
            if(L->next != NULL)
                printf("%d %d ", L->Coef, L->index);
            else
                printf("%d %d
    ", L->Coef, L->index);
            L = L->next;
        }
    }
    int main()
    {
        List L;
        CreatList(L);
        Derivation(L);
        Output(L);
    }
    

      

  • 相关阅读:
    制衡技术的新蓝海
    制衡技术,从Adblock所想到的
    centos6中安装新版 Elasticsearch 7.x
    nrm 安装与npm镜像切换
    james2.3 配置收件 之 MariaDB数据库配置
    手动搭建apache james邮件服务器,实现邮件功能
    James 如何作为服务在后台启动
    安装最新版RabbitMQ v3.7.13 以及基本配置
    mac 下 通过 brew 安装 MariaDB
    Mac 上安装maven
  • 原文地址:https://www.cnblogs.com/Jie-Fei/p/10140771.html
Copyright © 2020-2023  润新知