簡単に言えば、私は基本的なデータベースのための単一リンクリストの本当に原始的な実装を書いています。ユーザーがインデックスの下にリストされている要素をDB内の現在のレコード数よりも多く印刷するように要求すると、セグメンテーション違反が発生し続けますが、差が1の場合に限ります。数値が大きい場合は、そこに書き込んだエラーシステムがトリガーされます。
コードは次のとおりです。
void print_spec(List* head)
{
int index, i, is_correct=1;
List * current=NULL; //List is typedef'ed structure consisting variables for data and pointer assumed to be bound to next element in list
printf("\nInput the element index: ");
scanf("%d", &index);
if(head!=NULL)
{
current=head;
for (i=0; i<index; i++)
{
if(current==NULL)
{
printf("There is no such element");
is_correct=0;
break;
}
else current=current->next;
}
if(is_correct!=0) print(current); //this function simply prints out variables from element
}
else printf("List is empty, can't print");
}
少しエラーがあると思いますが、トピックで述べたように、ループカウンターでの範囲超過の可能性を考慮して試行錯誤しながら2時間かけて探していますが、適切な結果が得られませんでした。 。