私は現在、ノードを使用してリンクリストプログラムを作成しています(他の方法はわかりません)。ディープコピーを作成し、〜List()を使用してすべてのノードとセンチネルを削除する際に問題が発生しました。ノードの削除は問題ではありませんが、最初のノードにはインデックス値が割り当てられていないため、センチネルは問題になります。
List::~List()
{
for(size_t i=0; i<size; i++)
{
_setCurrentIndex(i);
if(current && curent->next == NULL)
{
Node *temp = current->next;
delete temp;
delete current;
}
else
{
Node *old = current;
current = current->next;
delete old;
}
}
}
List::List(const List & orig)
{
for(size_t i=0; i<size; i++)
{
if(i==0)
{
Node *copyFront = new Node; //the first sentinel
copyFront->data = orig.front->data; //front is defined in private in list.h
copyFront->prev = NULL; // it is defined as a Node (same for rear)
}
else if(0<=i && i<size) //put in i<size b/c 0<=i would always be true
{
_setCurrentIndex(i) //sets what current is and currentIndex which pts to diff Nodes
Node *copy = new Node;
copy->data = current->data;
copy->next = current->next;
current = current->next;
}
else if(i+1 == size)
{
Node *copyRear = new Node; //making the last sentinel, but it has to be
copyRear->data = orig.rear->data; //after data Node
copyRear->next = NULL;
}
}
}
次に進む方法や、何かがひどく間違っている場合に何を変更するかについて、このコードに関するアドバイスとコメントを求めています!