#include<stdio.h>
#include<stdlib.h>
typedef struct Node node; // <= 이부분 만 바꿧습니다.
struct Node{
int coef;
int exp;
node* link;
};
node* polyadd(node* y, node* h);
void appendNode(node* poly, int coef, int exp,node* last);
void printpoly(node* pc);
void sortlist(node* pl);
int main(void)
{
node* a;
node* b;
node* d;
node* j;
node* k;
node* newNode;
int i, n, m;
printf("\n A 다항식의 항수 : ");
scanf("%d", &n);
j = a;
for(i=0; i<n; i++)
{
newNode = (node *)malloc(sizeof(node));
printf("\n A 다항식의 계수, 지수 입력 :");
scanf("%d %d",&newNode->coef, &newNode->exp);
newNode->link = NULL;
j->link=newNode;
j=newNode;
}
printf("\n B 다항식의 항수 : ");
scanf("%d", &m);
k = b;
for(i=0; i<m; i++)
{
newNode = (node *)malloc(sizeof(node));
printf("\n B 다항식의 계수, 지수 입력 :");
scanf("%d %d",&newNode->coef, &newNode->exp);
newNode->link = NULL;
k->link=newNode;
k=newNode;
}
printpoly(a);
printpoly(b);
d = polyadd(a,b);
printpoly(d);
return 0;
}
node* polyadd(node* y, node* h)
{
int sum;
node* c;
node* r;
node* p;
node* q;
p = y;
q = h;
c = r;
while(p->link != NULL && q->link != NULL)
{
if(p->exp < q->exp)
{
appendNode(c,q->coef,q->exp,r);
q = q->link;
}
else if(p->exp == q->exp)
{
sum = p->coef + q->coef;
if(sum != 0)
{
appendNode(c,sum,p->exp,r);
p = p->link;
q = q->link;
}
}
else
{
appendNode(c,p->coef,p->exp,r);
p = p->link;
}
}
while(p != NULL)
{
appendNode(c,p->coef,p->exp,r);
p = p->link;
}
while(q != NULL)
{
appendNode(c,q->coef,q->exp,r);
q = q->link;
}
r->link=NULL;
return c;
}
void appendNode(node* poly, int coef, int exp, node* last)
{
node* newNode;
newNode = (node *)malloc(sizeof(node));
newNode->coef = coef;
newNode->exp = exp;
newNode->link = NULL;
if(poly == NULL)
{
poly = newNode;
last = newNode;
}
else
{
last->link = newNode;
last = newNode;
}
printf("%d %d", poly->coef, poly->exp);
}
void printpoly(node* pc)
{
while(pc != NULL)
{
if(pc->coef != 0)
{
if(pc->coef > 0)
{
printf(" +%dx^%d",pc->coef,pc->exp);
}
else
{
printf(" %dx^%d",pc->coef,pc->exp);
}
}
pc = pc->link;
}
putchar('\n');
}
이렇게 하니까 실행은 되네요 ㅡㅡ;;;
|