프로그램에서 링크 된 목록을 만들어야합니다. 내 프로그램에서 malloc()을 사용하여 힙에 목록이 할당되었지만 방문하려고 시도했지만 segmetation 오류가 발생합니다.링크 된 목록을 할당 한 후 세그먼테이션 오류가 발생했습니다.
편집 : 나는이 줄에서 SIGSEGV를 얻을 "동안 (! (노드 ->의 nodeType == TYPE_END_LIST)) {"
struct dagNode *createList(int k);
struct dagNode *newNodeXInterval(int type, int val);
struct dagNode *createList(int k){
struct dagNode *head, *node;
printf("\nList %d = ", k);
head = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,1));
node = head;
int i;
for (i=1; i<LENGTH_OF(k); i++){
node->next = newNodeXInterval(TYPE_XTEST, getRightPointOf(k,i));
node = node->next;
node->next = newNodeXInterval(TYPE_EDGE_OR_GAP, getVal(k,i+1));
node = node->next;
}
node = newNodeXInterval(TYPE_END_LIST, 0);
node = head; // i think that here there is the error
printf("%d", node->val); i=0;
while(!(node->nodeType == TYPE_END_LIST)){
printf("%d ", i);
node = node->next;}
return head;}
struct dagNode *newNodeXInterval(int type, int val){
struct dagNode *node = (struct dagNode *) malloc(sizeof(struct dagNode));
if (type == TYPE_EDGE_OR_GAP){
*node = (struct dagNode) {(val<0)? TYPE_GAP:TYPE_EDGE, val, NULL, NULL, NULL};
}
else{
*node = (struct dagNode) {type, val, NULL, NULL, NULL};
}
return node; }
호출자 함수는리스트의 머리를 얻을 것입니다.
범위를 좁혀주세요 - 어떤 줄에서 세그먼트 오류가 발생합니까? –
SEGV가있는 경우 코어가 생겨서 어디에서 죽었는지 알 수 있습니까? – Useless