Ich versuche das mittlere Element einer verknüpften Liste zu finden, aber ich bekomme einen Segmentierungsfehler, und ich bin mir nicht sicher, was schief läuft. Dies ist meine Implementierung des Hasen Kaninchen-Algorithmus:Segmentierungsfehler beim Finden des mittleren Elements in einer verketteten Liste
//fast slow pointer method
void ptMiddle(struct node **head_ref)
{
struct node *fast = (*head_ref);
struct node *slow = (*head_ref);
fast = fast->next;
while(fast!=NULL)
{
// printf("%d%d",slow->data,fast->data);
slow = slow->next;
fast = fast->next->next;
}
printf("Middle elemnet is:%d\n",slow->data);
}
int main()
{
struct node * head=NULL;
push(&head,1);
push(&head,2);
push(&head,3);
push(&head,4);
printList(&head);
printf("M:%d\n",middleNode(&head)->data);
printf("here");
append(&head,5);
append(&head,6);
printList(&head);
printf("M:%d\n",middleNode(&head)->data);
printf("here");
ptMiddle(&head);
return 0;
}
Bitte helfen Sie aus.
Die Implementierung von 'push' fehlt – RoiHatam
' fast-> next-> next; 'wird fehlschlagen, wenn' fast-> next' 'NULL' ist. –
bieten [mcve]. – BLUEPIXY