数据结构与算法(python)单向链表表示两个多项式相加

import sys
class equation:
    def __init__(self):
        self.coef=0
        self.exp=0
        self.next=None
def create_link(data):
    for i in range(4):
        newnode=equation()
        if not newnode:
            print('Error!!内存分配失败!!')
            sys.exit(0)
        if i==0:
            newnode.coef=data[i]
            newnode.exp=3-i
            newnode.next=None
            head=newnode
            ptr=head
        elif data[i]!=0:
            newnode.coef=data[i]
            newnode.exp=3-i
            newnode.next=None
            ptr.next=newnode
            ptr=newnode
    return head
def print_link(head):
    while head!=None:
        if head.exp==1 and head.coef!=0:
            print('%dX+'%(head.coef),end='')
        elif head.exp!=0 and head.coef!=0:
            print('%dX^%d+'%(head.coef,head.exp),end='')
        elif head.coef!=0:
            print('%d'%head.coef)
        head=head.next
    print()

def sum_link(a,b):
    i=0
    ptr=b
    plus=[None]*4
    while a!=None:
        if a.exp==b.exp:
            plus[i]=a.coef+b.coef
            a=a.next
            b=b.next
            i=i+1
        elif b.exp>a.exp:
            plus[i]=b.coef
            b=b.next
            i=i+1
        elif a.exp>b.exp:
            plus[i]=a.coef
            a=a.next
            i=i+1
    return create_link(plus)
def main():
    data1=[3,0,4,2]
    data2=[6,8,6,9]
    print('原始多项式:\nA=',end='')
    a=create_link(data1)
    b=create_link(data2)
    print_link(a)
    print('B=',end='')
    print_link(b)
    print('多项式相加的结果:\nC=',end='')
    print_link(sum_link(a,b))
main()

你可能感兴趣的:(数据结构与算法(python)单向链表表示两个多项式相加)