연결리스트 질문
글쓴이: 익명 사용자 / 작성시간: 금, 2020/04/03 - 3:21오후
#include
#include
typedef int element;
typedef struct ArrayList {
element data;
struct ArrayList* link;
}ArrayList;
ArrayList* insert_first(ArrayList* head, int value)
{
ArrayList* p = (ArrayList*)malloc(sizeof(ArrayList));
p->data = value;
p->link = head;
head = p;
return head;
}
int main(void) {
ArrayList* list = NULL;
insert_first(list, 41);
printf("%d->",list->data);
return 0;
}
이 코드를 실행시키면 insert_first함수에서 값전달이 제대로 안되는거 같은데 뭐가 문제인지 모르겠어요
Forums:
디버그를 해 보셨나요?
디버그를 해 보셨나요?
디버깅해보니
디버깅해보니
[예외가 throw됨: 읽기 액세스 위반입니다.
list이(가) nullptr였습니다.]라고 뜨네요
그건 디버깅이 아니라 실행한 결과일 것입니다.
그건 디버깅이 아니라 실행한 결과일 것입니다. 디버깅하셨다면 최소한 예외가 어디에서 발생했는지 라인 번호는 알 수가 있으실 겁니다.
다른 문제가 더 있을지는 모르겠지만 일단 눈으로만
다른 문제가 더 있을지는 모르겠지만 일단 눈으로만 봐도...
main에서 list가 NULL로 초기화되었고,
insert_first() 함수 안에서 무슨 일을 어떻게 하든 main의 list변수에는 영향을 미치지 못할 테니
그 다음 줄 list->data 를 접근하려는 순간 죽겠군요.
list의 주소를 넘기고, 받는 쪽에서는 ArrayList ** 타입의 매개변수로 받아서 *head 에 값을 넣으세요.
좋은 하루 되세요!
댓글 달기