동적 메모리 할당에서 실행중에 계속 에러가 뜨네요..
글쓴이: shs0917 / 작성시간: 목, 2004/04/08 - 10:02오전
#include <stdio.h> #include <stdlib.h> #define IS_FULL(temp) (!(temp)) typedef struct poly_node *poly_pointer; struct poly_node{ int coef; int exp; poly_pointer link; }; void attach(int coef, int exp, poly_pointer *ptr); void main(void){ poly_pointer a = NULL, b = NULL, c = NULL; int coef, exp; printf("Input poly1(if coef is '0' then end): "); while(1){ printf("coef: "); scanf("%d", &coef); if(coef == 0) break; printf("exp: "); scanf("%d", &exp); if(exp == 0) break; attach(coef, exp, &a); } printf("Input poly2(if coef is '0' then end): "); while(1){ printf("coef: "); scanf("%d", &coef); if(coef == 0) break; printf("exp: "); scanf("%d", &exp); if(exp == 0) break; attach(coef, exp, &b); } printf("\n"); exit(0); } void attach(int coef, int exp, poly_pointer *ptr){ poly_pointer temp; temp = (poly_pointer)malloc(sizeof(struct poly_node)); if(IS_FULL(temp)){ fprintf(stderr, "Memory is full!\n"); exit(1); } temp->coef = coef; temp->exp = exp; (*ptr)->link = temp; (*ptr) = temp; free(temp); }
요즘들어 비슷한 질문을 계속 반복해서 올리게 되는거 같아서 죄송스럽네요..
에구.. 제가 링크드리스트가 제대로 이해가 안되는건지..
코드를 아무리 들여다 봐도 무엇이 잘못된건지 잘 모르겠습니다.
답변 부탁 드립니다. :oops:
Forums:
main()에서 attach()를 부를때 넘겨주는 poly_pointer
main()에서 attach()를 부를때 넘겨주는 poly_pointer가 null 입니다.
아래에서 null인 ptr을 참조하려 했기 때문에 문제가 생깁니다.
처음 시작하는 head를 만들어줘야 할 것 같고요..
attach()함수에서 free()부분도 나중에 문제가 될 것 입니다.
새로운 놈을 추가해 줬는데, 그 놈을 free()해 버렸으니까요.
또, poly_pointer가 pointer 형 데이터타입이기 때문에 별도로
주소연산자나 포인터 연산자를 사용할 필요가 없을것 같습니다.
그러니까, attach()의 원형도 attach(int,int,poly_pointer)이면 될것 같고,
(*ptr)->link 라는 부분도 ptr->link로 하면 될 것입니다.
혹시, 이석호씨가 번역한 "C로 쓴 자료구조론"라는 유명한 책을 보고
계신것 아닌가요? 변수명이 눈에 익군요
아.. 단번에 책을 맞춰버리시네요.. 유명한 책이 맞긴 맞나보네요..
아.. 단번에 책을 맞춰버리시네요.. 유명한 책이 맞긴 맞나보네요..
제가 자료구조를 제대로 공부해보려고 책을 찾다가 이 책을 보고
정말 필독서로 한권쯤 필요할거 같아서.. 돈주고 사서 공부중입니다.
(신조가 책을 돈주고 사야 아까워서라도 열심히 본다는... :oops: )
답변 감사드리구요.. 빨리 테스트 해봐야 겠습니다..
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
이런.. attach()함수의 타입은 좀 생각을 해 봐야하겠습니다.
이런.. attach()함수의 타입은 좀 생각을 해 봐야하겠습니다.
포인터 속에 묻혀 살다보니까 헷갈립니다. T.T
누가 좀 정리해 주세요
Re: 동적 메모리 할당에서 실행중에 계속 에러가 뜨네요..
요즘들어 매우 열심히 하고 계시다는 것을 느낄 뿐입니다.
올려주시는 질문을 읽으면서 누군가가 (특히 저처럼 질문을 열심히 읽어도 답변을 달만한 공력이 못되는 사람이) 덩달아 공부하고 있다는 사실은 눈치채셨는지요? :)
--
자본주의, 자유민주주의 사회에서는 결국 자유마저 돈으로 사야하나보다.
사줄테니 제발 팔기나 해다오. 아직 내가 "사겠다"고 말하는 동안에 말이다!
차리서님은 제가 kldp 돌아댕기면서 게시판에서 꽤 낯익으신 분 같네
차리서님은 제가 kldp 돌아댕기면서 게시판에서 꽤 낯익으신 분
같네요.. :D 저도 빨리 내공을 쌓아서 질문보다는 성실한 답변을
많이 달아줄 수 있는 그런 사람이 되고 싶군요.. :oops:
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
ptr = temp 이런식으로 *형이 아니게 매개변수를 사용해봤었는데
ptr = temp
이런식으로 *형이 아니게 매개변수를 사용해봤었는데.. 그때 올린
질문에 다른분이 달아주신 답변을 인용합니다..
컴퓨터가 이해할수 있는 코드는 어느 바보나 다 작성할 수 있다. 좋은 프로그래머는 사람이 이해할 수 있는 코드를 짠다 - 마틴파울러
댓글 달기