2014-12-05 3 views
0

Я пишу функцию, которая принимает две структуры списка, каждая структура списка содержит два указателя: один для первого узла в списке, а другой - последний в списке. Я получаю ошибку сегментации в строке if в строке if. Вот моя функция:Слияние двух отдельных списков ссылок в c

extern void lst_merge_sorted(LIST *a, LIST *b); 
void lst_merge_sorted(LIST *a, LIST *b){ 
NODE *aCurr,*bCurr,*aTemp,*bTemp; 
aCurr = a->front; 
bCurr = b->front; 
aTemp = a->front; 
bTemp = b->front; 
int aLength = 2, bLength = 2; 
while(aCurr->next != NULL){ 
    aLength++; 
    aCurr = aCurr->next; 
    } 
while(bCurr->next != NULL){ 
    bLength++; 
    bCurr = bCurr->next; 
    } 
int i,j; 
for (i = 0; i < aLength; i++){ 
    for(j = 0; j < bLength; j++){ 
     if (bTemp->val < aTemp->val){ 
      bTemp->next = aTemp->next; 
      aTemp->next = bTemp; 
      } 
     bTemp = bTemp->next; 
     } 
    aTemp = aTemp->next; 
    } 
} 

и мой список Struct/Node Struct:

typedef struct node { 
    ElemType val; 
    struct node *next; 
} NODE; 


struct list_struct { 
    NODE *front; 
    NODE *back; 
}; 

Кто-нибудь есть какие-либо идеи, почему я получаю ошибку сегм? EDIT ElemType декларация

Typedef int ElemType 
+0

'for (i = 0; i wildplasser

+0

Вы правы, это не имеет смысла. Любая идея об ошибке seg? @wildplasser –

+2

Пожалуйста, взгляните на старые темы справа '- >>'. Подобные вещи можно обрабатывать довольно элегантно в 10 строках кода. Без учета. – wildplasser

ответ

1

Взгляните на этот вложенном цикле. Вероятно, вы действительно не хотели проходить список b aLength * bLength раз.

Смежные вопросы