これは私がこれまでに持っているものです:
void sort(const E &t)
{
DNode<E> *tmp = new DNode<E>(t,NULL,NULL);
if(size==0)
{
cout << "List is empty" << endl;
}
else if(t<=head->element)
{
tmp->element=t;
head->prev = tmp;
tmp->next=head;
head = tmp;
}
else if(t>=tail->element)
{
tmp->element=t;
tail->next = tmp;
tmp->prev=tail;
tail = tmp;
}
curr=tmp;
insert(t);
size++;
}
insert() は私のプログラムの単なる別の関数です:
void insert(const E &t)
{
DNode<E> *tmp = new DNode<E>(t,NULL,NULL);
if (size == 0)
{ curr=head=tail=tmp; }
else
{
tmp->next=curr;
tmp->prev=curr->prev;
if (curr->prev) curr->prev->next=tmp;
else { head=tmp; }
curr->prev=tmp;
curr=tmp;
}
size++;
}
コンパイルはできますが、正しい結果が得られません。エラーが何であるかわかりません。本当に助けが必要です。どんな助けでも大歓迎です。
これは私のメインプログラムにあります:
one.sort(10);
one.sort(20);
one.sort(30);
one.sort(40);
one.sort(50);
one.sort(60);
one.print();
one.moveToEnd();
one.prev();
one.prev();
one.remove();
one.remove();
one.print();
cout<<endl;
私はこれを取得する必要があります:
ヘッド==> 10 -> 20 -> 30 -> 40 -> 50 -> 60 <==テール ヘッド==> 10 -> 20 -> 50 -> 60 <==テール
しかし、代わりにこれを取得します: HEAD==> 10 -> 20 -> 20 -> 30 -> 30 -> 40 -> 40 -> 50 -> 50 -> 60 -> 60< ==TAIL HEAD==> 10 -> 20 -> 20 -> 30 -> 30 -> 40 -> 40 -> 60 -> 60 <==テール