我感觉是currentNode初始值决定了for循环最终取到的是第i个节点点——初始值时头节点,而不是头节点的next,只有当初始值时头节点的next时,for循环结束后取出来的才是第i+1个元素。
也可以自己推算下,当i=0时,currentNode=head.next,取的刚好时第0个元素;当i=1时,currentNode=head.next.next,取的刚好时第1个元素……,依次类推即可
currentNode = currentNode->next;
只写这一句的话,在操作的时候,没有办法知道当前节点的前驱结点。 对于Listdelete函数,需要不同的判断条件来实现删除功能。 对于GetElem函数,它并不需要知道前驱结点的位置,因此是可以的。
可以的?
的确不需要
只不过直接复制过来了
确实只是复制过来快一点
currentNode就是尾节点,所以currentNode->next 就为NULL了,后面没有节点了
首先需要明确的是,链表和数组不同,链表不能通过下标 i 来直接获取到 i 所对应的结点,而是先要定义一个计数器在循环中数数,通过结点的next一直遍历到第 i 个结点,即当计数器的值等于 i 时。因此只能通过从头结点开始遍历的方式来找第 i 个结点 ,而不能通过 i 来直接获取第 i 个结点。说的有点啰嗦。。。希望对你有帮助~
第0个节点是头结点,传入的数字保存在数据域date里,m_iLength是整个链表的长度,从头结点数到尾节点,每个节点的next指向下一个节点。