为了账号安全,请及时绑定邮箱和手机立即绑定

对于链表中取某个节点元素

取元素时取i=m_iLength不就是取最后一个节点的元素吗,为什么不可以?

正在回答

3 回答

首先需要明确的是,链表和数组不同,链表不能通过下标 i 来直接获取到 i 所对应的结点,而是先要定义一个计数器在循环中数数,通过结点的next一直遍历到第 i 个结点,即当计数器的值等于 i 时。因此只能通过从头结点开始遍历的方式来找第 i 个结点 ,而不能通过 i 来直接获取第 i 个结点。说的有点啰嗦。。。希望对你有帮助~

1 回复 有任何疑惑可以回复我~
bool List::GetElem(int i, Node *pNode)
{
if(i < 0 || i >= m_iLength)
    return false;

Node *currentNode = m_pList;
for(int k = 0; k < i; k++)
{
currentNode = currentNode->next;
}

pNode->data = currentNode->data;
return true;
}

当i=m_iLength时,currenNode已经为尾节点指向NULL,而不是指向最后元素的节点;

所以要去取最后一个元素的应该是 i = m_iLength-1;

if(i < 0 || i >= m_iLength)    
    return false;

所以这里判断i是否是有效值,就应不包括等号;

^.^Y

0 回复 有任何疑惑可以回复我~

链表中每一个节点都是通过上一个节点的next指向,不同于数组通过下标就可以取得相应元素!

所以取元素时i=m_iLength并不能取得最后一元素。

希望帮到你!^.^

1 回复 有任何疑惑可以回复我~
#1

qq_残缺的悬念_04419689 提问者

我说的是基于for循环时的i=iLength,是指针的循环,并不存在是不是数组寻址的问题,还是谢谢你。讨论的是视频中的代码
2016-12-21 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

对于链表中取某个节点元素

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信