变量没有比较正确

时间:2014-10-29 08:21:40

标签: c++ if-statement linked-list insertion-sort

下面是我编写的用于在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;
};

1 个答案:

答案 0 :(得分:1)

您的比较(obj <= head->data)((pNode->next)->data <= obj)显然位于ItemType *指针之间。如果要比较它们指向的ItemType个对象,则需要取消引用指针。例如,测试(*obj <= *head->data)