以下是我编写的用于生成C++排序链接列表的类 当它不是模板时,完全相同的代码工作。 但是,一旦我有模板,代码似乎不正确比较变量。变量未进行比较
例如, 当我插入1,-1,13 该列表应该有-1 1 13按递增顺序。 然而,最终名单出来是13 -1 1.
在调试过程中,它甚至没有通过最后一种情况。 它进入第二种情况时,说13小于-1。
发生了什么...?
template <class ItemType>
bool List342<ItemType>::Insert(ItemType *obj)
{
Node *insNode = new Node;
insNode->data = obj;
if (head == NULL)
{
head = insNode;
return true;
}
if (obj <= head->data)
{
insNode->next = head;
head = insNode;
return true;
}
Node *pNode = head;
while ((pNode->next != NULL) && ((pNode->next)->data <= obj))
{
pNode = pNode->next;
}
insNode->next = pNode->next;
pNode->next = insNode;
return true;
}
这里是节点定义
struct Node {
ItemType *data;
Node *next;
};
当你用调试器一行一行地逐行执行代码时,你看到了什么? – 2014-10-29 08:25:46
直到插入1和-1为止它一直很好。但是当它到了13的插入位置时,它只是进入了数据的情况。该值显示为-1和13,但是......因此在-1之前插入13。 – 2014-10-29 08:27:40
我们可以看到Node的定义吗? – Darinth 2014-10-29 08:29:36