1040 일원 다항식 덧셈 연산 의 실현 SWUST OJ 데이터 구조 (전 40 문제)

9267 단어
1040 일원 다항식 덧셈 연산 의 실현
묘사 하 다.
프로 그래 밍 은 일원 다항식 의 덧셈 연산 을 실현 한다.(링크 로 구현 요구)
입력
첫 번 째 행 위 는 1 원 다항식 A 로 0, 0 을 입력 으로 끝 냅 니 다.
두 번 째 행 위 는 1 원 다항식 B 로 0, 0 을 입력 으로 끝 냅 니 다.
출력
다항식 A 와 다항식 B 의 합.
샘플 입력
5,3 7,8 9,15 0,0 2,0 6,3 -7,8 0,0
샘플 출력
2x0+11x3+9x15
c + + 코드 구현
#include 
using namespace std;
typedef struct node 
{
    int xishu;
    int cifang;
    node *next;
} LinkNode;

void Init(LinkNode *&Head)
{
    Head=(LinkNode *)malloc(sizeof(LinkNode));
    Head->next=NULL;
}

void Create (LinkNode *&Head)
{
    LinkNode *p1,*p2;
    p1=Head;
    
    int c,x;
    while(scanf("%d,%d",&c,&x)&&(c||x))
    {
        p1=Head;
        while(p1->next!=NULL&&p1->next->cifang<x)
            p1=p1->next;
        
        if(p1->next==NULL||p1->next->cifang>x)
        {
            p2=(LinkNode *)malloc(sizeof(LinkNode));
            p2->cifang=x;
            p2->xishu=c;
            p2->next=p1->next;
            p1->next=p2;
        }
        else 
            p1->next->xishu+=c;
    }
}

void Put(LinkNode *Head)
{
    LinkNode *p1=Head->next;
    
    while(p1!=NULL)
    {
        if(p1->xishu==0)
        {
            p1=p1->next;
            continue;
         } 
        if(p1!=Head->next)
            cout<<"+";
        cout<<p1->xishu<<"x^"<<p1->cifang;
        p1=p1->next;
    }
}

int main()
{
    LinkNode *Head;
    Init(Head);
    Create(Head);
    Create(Head);
    Put(Head);
    return 0;
}

좋은 웹페이지 즐겨찾기