私はもちろん、リンクされたリストのヘルプをたくさん見てきましたが、私は何が間違っているのか分かりません。私は他のコードのロジックを理解していると思うが、何かが私のものであり、正しく動作させることができない。機能のリンクされたリスト、どこで私のロジックに欠陥がありますか?
コード:
void SparseM_list::newTerm(valueType newValue, int row, int column)
MatrixTerm *n = new MatrixTerm;
n->next = NULL;
n->column = column;
n->row = row;
n->value = newValue;
if (head != NULL)
{
cur = head;
while (cur->next != NULL)
{
cur = cur->next;
cout << "does it ever get inside the while loop? cur and curnext -> " << cur << " " << cur->next << endl; <-- never outputs
}
cur->next = n;
}
else //if head is null, n will be the starting point
{
head = n;
}
delete n;
}
と下記だから基本的に私のロジックは、この
- あるリンクリストに
struct MatrixTerm { valueType value; //store value of matrix element int column; //store column position int row; //store row position MatrixTerm *next; //point to next node in the linked list }; MatrixTerm *head; //head point for the linked list MatrixTerm *cur, *prev;
を使用して、私の疎行列のプライベート構造体/変数であります新しい用語情報はMatrix Term nに動的に割り当てられます。ヘッドは(デフォルトコンストラクタで設定されている)、その後、ヘッド= N nullの場合
データの
- 第二セットが=!。頭の中でヌルを行くので、私は頭に等しいCURポインタを設定
- 一方、head-> nextはnullでなければならないので、cur-> nextはnullにする必要があるため、2番目のデータのループはスキップされます。 cur-> nextをnに設定します。
- 3番目のデータが入ります。Cur-> nextは前のnと同じなので、whileループに入ります。現在はcur-> nextに設定されています。 whileループの状態をチェックすると、cur-> nextはnullになるはずなので、cur-> next = n(3番目のデータセット)の設定に行きます。
ただし、whileループに入ることはありません。どこで私は物事を台無しにしていますか? whileループは、リンクされたリストをトラバースするために使用されます。
実際にポインタを割り当てていて、それを削除すると、cur-> nextがNULLを指すたびに – Kochoba