这是我到目前为止所拥有的:
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 <==尾巴