私はこのようなリンクリストを持っています:
typedef struct _LIST_ELEMENT
{
T* data;
_LIST_ELEMENT* nextItem;
int index;
}LITEM,*P_LITEM,**PP_LITEM;
およびポインタへの4つのポインタ
PP_LITEM _head;
PP_LITEM _tail;
PP_LITEM _current;
PP_LITEM _previous;
状況は次のようになります。
リストには4つの要素があり、_headは最初を指し、_tailは最後を指し、_currentと_previousはカーソルとして一緒に機能します。インデックス2の要素を消去した後、リストにはインデックス0、1、3の3つの要素が含まれ、すべてのポインターが右を指します。この時点でこれを行うと(カーソルを先頭に移動するため):
(*_previous) = (*_tail);
(*_current) = (*_head);
リストにインデックス1の要素がありませんが、すべてのポインターが正しくポイントしています。私がこれを行う場合:
_previous = &(*_tail);
_current = &(*_head);
すべてが順調で、何も欠けていません。
なぜこれが起こっているのか誰かが何か考えを持っているなら、私に教えてください。