关于链表指针的问题
看一下这段代码、我一直郁闷第一道红线那里定义关键字为什么前面要加*号,*号有什么用?第二道红线那里frist为什么还要加*号呢?后面的x为什么又不加了?first和x有什...
看一下这段代码、
我一直郁闷第一道红线那里定义关键字为什么前面要加*号,*号有什么用?
第二道红线那里frist为什么还要加*号呢?后面的x为什么又不加了?first和x有什么区别? 展开
我一直郁闷第一道红线那里定义关键字为什么前面要加*号,*号有什么用?
第二道红线那里frist为什么还要加*号呢?后面的x为什么又不加了?first和x有什么区别? 展开
1个回答
展开全部
首先,要分清楚这里面有两种类型,一种是listnode,它表示链表的节点,另一种是listnode *,它表示指向链表节点的指针,同时又定义listpointer表示listnode *这种类型。
至于insert函数中,为什么first的类型是listpointer *,也就是listnode **,指向链表节点的指针的指针,这是因为,在插入的过程中,我们需要对表头first进行修改,并且要将修改之后的值传递出来,如果只是listnode类型的话,在里面修改first的指向,(比如空链表第一次插入一个值),修改之后的情况传递不出函数,因此需要指针的指针,当然,使用listnode &也是可以的。
第二个参数x的类型为什么是listpointer,这个其实并不是什么特定的要求,不同的书上可能叙述也不同。这里的意思是,我们先在外面创建一个插入的节点newNode,下面我们用x指向这个新节点,那么我在插入节点到链表的时候,需要把新结点传递给insert函数,这里就用指向这个节点的指针传递。
至于insert函数中,为什么first的类型是listpointer *,也就是listnode **,指向链表节点的指针的指针,这是因为,在插入的过程中,我们需要对表头first进行修改,并且要将修改之后的值传递出来,如果只是listnode类型的话,在里面修改first的指向,(比如空链表第一次插入一个值),修改之后的情况传递不出函数,因此需要指针的指针,当然,使用listnode &也是可以的。
第二个参数x的类型为什么是listpointer,这个其实并不是什么特定的要求,不同的书上可能叙述也不同。这里的意思是,我们先在外面创建一个插入的节点newNode,下面我们用x指向这个新节点,那么我在插入节点到链表的时候,需要把新结点传递给insert函数,这里就用指向这个节点的指针传递。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询