尝试修复我的双向链表代码,以便对插入,任何想法进行排序。这就是我所拥有的。它插入到列表中,只是未分类。现在已经挣扎了一段时间。非常感谢。
template <typename T>
bool DoublyLinkedList<T>::insert(T data)
{
int i = 0;
Node<T> *tmp, *newNode;
bool check = false;
newNode = new Node<T>(data);
tmp = mHead;
if (newNode == NULL)
return false;
if (mHead == NULL)
{
mHead = newNode;
mTail = newNode;
mCount++;
return true;
}
while (tmp != NULL)
{
if (tmp->mNext == NULL)
{
if (tmp->mData <= data)
{
newNode->mPrevious = tmp;
tmp->mNext = newNode;
mTail = newNode;
}
else
{
newNode->mNext = tmp;
tmp->mPrevious = newNode;
mHead = newNode;
}
}
else if (tmp->mNext->mData >= data)
{
newNode->mPrevious = tmp;
newNode->mNext = tmp->mNext;
tmp->mNext->mPrevious = newNode;
tmp->mNext = newNode;
break;
}
tmp = tmp->mNext;
}
mCount++;
return true;
}
答案 0 :(得分:0)
如果我没有弄错的话,错误就在于你的其他人。您当前的实施比较&#34;数据&#34;到节点AFTER&#34; tmp&#34;并且,根据设计,不允许在列表中添加任何内容。
如果您有一个列表[4,7],并且输入了一个值为3的节点,则完全忽略第一个元素并与第二个元素进行比较 - 得到[4,3,7]。考虑将数据与tmp-> mData而不是tmp-&gt; next-&gt; mData进行比较,并相应地调整逻辑。
此外,在使用通用数据类型()时,您不应该依赖于简单的&#34;大于&#34;或者&#34;小于&#34;比较。说6&lt;&lt; 6&lt; 7,但在比较用户定义的结构或枚举类型时,可能没有明确的顺序。