프로그램이 실행된 후 값을 입력하자 에러가 뜨면서 꺼집니다.
아름나
질문 제목 : 프로그램이 실행된 후 값을 입력하자 에러가 뜨면서 꺼집니다.다항식을 단순 연결 리스트로 표현하는 코드를 짜는 도중 잘 실행되는지 테스트할려고 실행했는데 실행창이 뜨고 값을 입력하자 에러가 뜨면서 꺼집니다.질문 내용 :
#includestdlib.h
typedef struct node node;
typedef node *nodeptr;
typedef struct node {
int coef;
int expon;
nodeptr link;
} node;
nodeptr getnode();
nodeptr getpoly();
void addlast(nodeptr *, nodeptr);
void printpoly(nodeptr);
int main()
{
nodeptr a, b;
a = getpoly();
printf(\n);
printpoly(a);
printf(\n);
printf(\n);
b = getpoly();
printf(\n);
printpoly(b);
return 0;
}
nodeptr getnode()
{
return (nodeptr)malloc(sizeof(nodeptr));
}
nodeptr getpoly()
{
nodeptr list, p;
p = getnode();
p-link = null;
list = null;
printf(최고차항을 입력하시오: );
scanf(%d, &p-coef);
printf(%d항의 계수를 입력하시오: , p-coef);
scanf(%d, &p-expon);
while (1)
{
addlast(&list, p);
if (list-coef == 0)
{
break;
}
}
return list;
}
void addlast(nodeptr *head, nodeptr node)
{
if (*head == null)
{
*head = node;
}
else
{
node = getnode();
node-coef = (*head)-coef - 1;
printf(%d항의 계수를 입력하시오: , node-coef);
scanf(%d, &node-expon);
node-link = *head;
*head = node;
}
}
void printpoly(nodeptr poly)
{
nodeptr p = poly;
printf(다항식 : );
while (p != null)
{
printf(%dx(%d) , p-expon, p-coef);
p = p-link;
}
}
제 예상으로는 addlast함수 내에서 node = getnode() 때문인 거 같은데... addlast함수에서 node를 다시 할당받은 이유는 getpoly에서 p의 coef, expon값을 변경하면 list도 같이 변경되서 제가 원하는 결과가 나오지 않아서 node를 다시 할당받았습니다. 한줄씩 디버그 할때는 문제가 없었는데 전체적으로 실행하면 에러가 뜨네요... 어떻게 해결해야할까요...?