以下是我編寫的用於生成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