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

关于m_pList->next的两个问题

1.m_pList是一个Node*对象,next也是一个Node*对象,为什么考研m_pList->next?

2.在构造函数里面已经m_pList->next = NULL;那么在ClearList里面Node *currentNode = m_pList->next;之后,currentNode不是就永远都是NULL了吗,又怎么进入while循环额?


正在回答

4 回答

  1. m_pList是一个Node*对象,这是对的。next只是一个数据成员,next只是一个指向Node类型的指针,指向下一个结点

  2. “在构造函数里面已经m_pList->next = NULL”这是初始化的时候,并没有插入任何元素,当然应该置为空。插入元素之后,就不会再为空了。

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

vortesnail 提问者

非常感谢!
2016-10-24 回复 有任何疑惑可以回复我~
#2

vortesnail 提问者

朋友,我能再问你一下,为什么Node里面定义了指向Node的指针next,m_pList->next就怎么指向下一个结点了呢?实在摸不着头脑了。。
2016-11-01 回复 有任何疑惑可以回复我~
#3

慕粉20161020

m_pList是指向链表头结点的指针,简称为头指针,即通过m_pList可以访问到链表的第一个结点,结点类型为Node,Node对象有两个数据成员:data和next,所以m_pList->next相当于用头指针去访问第一个结点的数据成员,又因为next指向的是下一个结点,所以m_pList->next就指向第二个结点了。不知道我解释清楚了没有?
2016-11-24 回复 有任何疑惑可以回复我~
#4

weixin_慕斯0277608 回复 慕粉20161020

应该是这样的
2019-07-20 回复 有任何疑惑可以回复我~
查看1条回复

构造函数设置的就是一个空链表,链表中没有任何结点。所以此时执行完构造函数立马执行ClearList()语法上没有错误,但是没有任何意义,属于多此一举。一般情况下,实例化对象后,应该会执行插入和删除的操作,此时链表若:(1)不为空,则m_pList->next!=NULL,就可以顺藤摸瓜依次删除掉链表中每一个结点,(2)为空,此时也没必要进入到while循环了。

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

初始化时候链表中只有一个节点,即是头结点也是尾节点,所以next=NULL;当有多个节点时头结点的指针域指向下一个节点的数据域,不在是NULL啦!只有头节点时候ClearList()函数不起作用!

所以同意二楼观点!

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

描述问题要清楚。。。

不知从何答起。。。o(╯□╰)o

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

举报

0/150
提交
取消

关于m_pList->next的两个问题

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