zoukankan      html  css  js  c++  java
  • 6-3 Add Two Polynomials(20 分)

    Write a function to add two polynomials. Do not destroy the input. Use a linked list implementation with a dummy head node. Note: The zero polynomial is represented by an empty list with only the dummy head node.

    Format of functions:

    Polynomial Add( Polynomial a, Polynomial b );
    

    where Polynomial is defined as the following:

    typedef struct Node *PtrToNode;
    struct Node {
        int Coefficient;
        int Exponent;
        PtrToNode Next;
    };
    typedef PtrToNode Polynomial;
    /* Nodes are sorted in decreasing order of exponents.*/
    

    The function Add is supposed to return a polynomial which is the sum of a and b.

    Sample program of judge:

    #include <stdio.h>
    #include <stdlib.h>
    typedef struct Node *PtrToNode;
    struct Node  {
        int Coefficient;
        int Exponent;
        PtrToNode Next;
    };
    typedef PtrToNode Polynomial;
    
    Polynomial Read(); /* details omitted */
    void Print( Polynomial p ); /* details omitted */
    Polynomial Add( Polynomial a, Polynomial b );
    
    int main()
    {
        Polynomial a, b, s;
        a = Read();
        b = Read();
        s = Add(a, b);
        Print(s);
        return 0;
    }
    
    /* Your function will be put here */
    

    Sample Input:

    4
    3 4 -5 2 6 1 -2 0
    3
    5 20 -7 4 3 1
    

    Sample Output:

    5 20 -4 4 -5 2 9 1 -2 0

    代码:

    Polynomial Add( Polynomial a, Polynomial b )
    {
        Polynomial head = (PtrToNode)malloc(sizeof(struct Node));
        head -> Next = NULL;
        Polynomial q = head;
        while(a || b)
        {
            Polynomial p =(PtrToNode)malloc(sizeof(struct Node));
            p -> Next = NULL;
            if(a == NULL || b&&a -> Exponent < b -> Exponent)///防止段错误
            {
                p -> Exponent = b -> Exponent;
                p -> Coefficient = b -> Coefficient;
                q -> Next = p;
                q = p;
                b = b -> Next;
            }
            else if(b == NULL ||  a&&a -> Exponent > b -> Exponent)
            {
                p -> Exponent = a -> Exponent;
                p -> Coefficient = a -> Coefficient;
                q -> Next = p;
                q = p;
                a = a -> Next;
            }
            else
            {
                if(a -> Coefficient + b -> Coefficient)
                {
                    p -> Exponent = a -> Exponent;
                    p -> Coefficient = a -> Coefficient + b -> Coefficient;
                    q -> Next = p;
                    q = p;
                }
                a = a -> Next;
                b = b -> Next;
            }
        }
        return head;
    }
  • 相关阅读:
    Node.js中,获取req请求的原始IP
    socket原理详解
    让Redis在你的系统中发挥更大作用
    Redis复制与可扩展集群搭建【转】
    Linux下查看日志用到的常用命令
    Linux curl命令详解
    Linux 系统结构详解【转】
    网络IO之阻塞、非阻塞、同步、异步总结
    消息队列设计精要【转】
    MySQL的DDL语句、DML语句与DCL语句
  • 原文地址:https://www.cnblogs.com/8023spz/p/7704174.html
Copyright © 2011-2022 走看看