毎回セグメンテーション違反が発生するため、リンクリストで挿入を接続する際に発生するエラーを見つけるのに問題があります。この問題を見つけるために私が何に焦点を当てるべきかについての提案はありがたいです。
bool LinkedList::InsertAtIndex(int value, int index)
{
if (index < 0)
{
return false;
}
LinkedListNode* tmp = new LinkedListNode();
tmp->data = value;
tmp->next_node = NULL;
if (index == 0)
{
tmp->next_node = head;
head = tmp;
return true;
}
LinkedListNode* head_ref = head;
for (int i = 0; i < index - 1; i++)
{
head_ref = head_ref->next_node;
if (i == index - 1)
{
break;
}
}
if (head_ref == NULL)
{
return false;
}
temp->next_node = head_ref->next_node;
head_ref->next_node = temp;
return true;
}
ノードがインデックス0の後に挿入されると、いくつかの問題があると思います。コードスニペットを書き直して、それらのケースを説明しようとしました。
LinkedListNode* prev = head; // Locate node previous to insertion point
for (int i = 0; prev != NULL && i < index; i++)
{
// Use prev != NULL to make sure the list isn't shorter than the
// index.
// Use i < index to check all of 0...index-1 to get insertion
// at last index right. For example, in list a,b,c insert d at
// position 3 (zero-based counting)
if (i + 1 == index) // First, check to see whether i meets the
{ // index criteria. If yes, break out. prev
break; // is set to the right value.
}
prev = prev->next_node; // Advance prev to the next node to check
} // the next index value.
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加