int List:: LocateElem(Node *pNode)
{
int count = 1;
Node *CurrentNode = m_pList->next;
while (CurrentNode != NULL)
{
if(CurrentNode->data == pNode->data)
{
return count;
}
count++;
CurrentNode = CurrentNode->next;
}
return -1;
}
头结点是不存储元素的,count为0的情况是不存在的,所以直接设置为1;可以确保定位的是准确的节点。
{
int count = 1;
Node *CurrentNode = m_pList->next;
while (CurrentNode != NULL)
{
if(CurrentNode->data == pNode->data)
{
return count;
}
count++;
CurrentNode = CurrentNode->next;
}
return -1;
}
头结点是不存储元素的,count为0的情况是不存在的,所以直接设置为1;可以确保定位的是准确的节点。
2016-12-20
最赞回答 / 黑巫师0
首先需要明确的是,链表和数组不同,链表不能通过下标 i 来直接获取到 i 所对应的结点,而是先要定义一个计数器在循环中数数,通过结点的next一直遍历到第 i 个结点,即当计数器的值等于 i 时。因此只能通过从头结点开始遍历的方式来找第 i 个结点 ,而不能通过 i 来直接获取第 i 个结点。说的有点啰嗦。。。希望对你有帮助~
2016-12-20
最新回答 / kinpowoo
老师是这么说的,比如你要在主文件的函数中调用插入节点的函数,在主文件的函数中声明一个Node node对象,一般在函数中申请变量都是在栈中申请,不会在堆中,在栈中申请的对象在函数执行完成后就销毁了,可以节约内存资源。这时你把这个node对象的地址传入插入节点的函数中,插入节点函数只需要拿到这个node对象中的值,然后自己去堆中申请内存。 如果你直接引用传进来的node对象,这个对象在外面函数执行完成后被系统销毁了,刚插入的值不复存在,就会引发错误,
2016-12-09