도통 어디서 잘못이 돼서... 왜 계산을 못하는것인지 알수가 없네요... 지금 이거 가지고 2주를 고민중인데 영알수가 없어서 하다가 하다가 고수님들에게 부탁좀 드립니다... ㅠㅠ
ㅠㅠ 뭐가 잘못됀거죠? 저의 무식이 뼈져리게 느껴집니다..ㅠㅠㅠ
#include<stdio.h>
#include<stdlib.h>
struct listNode{
int coef;
int exp;
struct listNode* link;
};
listNode* polyadd(struct listNode* y, struct listNode* h);
void appendNode(struct listNode* poly, int coef, int exp,struct listNode* last);
void printpoly(struct listNode* pc);
void sortlist(struct listNode* pl);
void main()
{
struct listNode* a;
struct listNode* b;
struct listNode* d;
struct listNode* j;
struct listNode* k;
struct listNode* newNode;
int i, n, m;
printf("\n A 다항식의 항수 : ");
scanf("%d", &n);
j = a;
for(i=0; i<n; i++)
{
newNode = (listNode *)malloc(sizeof(listNode));
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 = (listNode *)malloc(sizeof(listNode));
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);
}
listNode* polyadd(struct listNode* y, struct listNode* h)
{
int sum;
struct listNode* c;
struct listNode* r;
struct listNode* p;
struct listNode* 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(struct listNode* poly, int coef, int exp, struct listNode* last)
{
listNode* newNode;
newNode = (listNode *)malloc(sizeof(listNode));
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(struct listNode* 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');
}
|