2
リンクリストにバブルソートを行い、セグメンテーションフォルトを取得しようとしています。私はリンクリストの並べ替えについてはすぐに行くのですか?デバッグは、比較関数にも何か問題があることを示しています。セグメンテーションフォールト
私がSEGFAULTになっている行がマークされています。
node {
string key;
node *next;
};
void sorting(node &start){
node *ptr,*ptr1,*pptr;
ptr=start.next;
while(ptr){
bool flag = true;
ptr1=start.next;
pptr=ptr1;
while(ptr1){
if(flag){ //for starting node
flag=false;
if(ptr1->key.compare(ptr1->next->key)>0){
node *temp=ptr1->next;
start.next=temp;
ptr1->next=temp->next;
temp->next=ptr1;
}
}else{
if(ptr1->key.compare(ptr1->next->key)>0){
node *temp=ptr1->next;
pptr->next=temp;
ptr1->next=temp->next;
temp->next=ptr1;
}
}
pptr=ptr1;
ptr1=ptr1->next;
if(!ptr1->next) //getting segmentation fault at this line
break;
}
ptr=ptr->next;
}
}
'場合(ptr1->次の!)' 'べきであるならば(PTR1!)'、すでに前方に1つの項目の横 'PTR1 = ptr1->と上記の1行を移動するので;'。 – mch
'node next;はおそらく' node * text; 'であり、ポインタの型に注意してください。 –