哦,第四行写错了,改为if (CurrentNode->data == pCurrentNode->data)?
你可以这样
crt = crt->next;
while (currentNode != NULL) {crt->printnode();crt = crt->next;}不然你会在开头输出一个0;因为这个课程的头节点是NULL,所以你要在while循环的前面加crt = crt->next;
pCurrentNode 是传入进来的啊 并不是List里边的
就是打印一下数据域的值啊,这个自己敲就好
前面是为了找到要找的结点,后面是防止该结点是最后一个结点。
什么叫不要头结点?
单链表找直接前趋结点要从头结点开始遍历.
你这样先定位要找的结点,再从头结点遍历,不是多此一举吗,简直就是浪费资源.
个人觉得完全可以的,毕竟判断老师的和你的代码都是用结点的位置来判断结点是否相同。老师的还多了一步判断结点值而已。
头结点只是一个牵头的作用,可以通过头结点来顺藤摸瓜找到链表中的所有元素,但本身并没存储有意义数据,所以作为前驱也就没有什么意义,因此不用头结点作前驱。希望能帮到你~
分文件类外定义,参考C++起航篇
按照我的理解,后面判断后继是不是NULL的判断,实际上是判断的是我们传入的PcurrentNode的next是不是NULL