在线性表的实现中,头插法和尾插法在函数参数中为什么么用的Node*&head?
目前在参考书上的代码实现线性表的操作。去掉&符号,编译依然正确。
一枚找工作的大四狗,汪汪。
void Insert_Head( Node *&head , const int &val ) // 头插法
{
Node *ptr = new Node() ;
ptr->next = head ;
ptr->data = val ;
head = ptr ;
}
void Insert_Back( Node *&head , Node *&back ,const int &val ) // 尾插法
{
Node *ptr = new Node() ;
ptr->data = val ;
ptr->next = NULL ;
if ( head == NULL )
head = back = ptr ;
else {
back->next = ptr ;
back = ptr ;
}
}
你注意一下 head 和 back 这两个定义成
Node*&
类型的参数,在函数内部都有赋值操作。&
表示引用,我想你应该知道的吧,*&
就是指针的引用,这个应该也好理解。引用有一个特点就是,修改型参的值同时也会修改实参的值,但如果不是引用,修改了形参的值对实参不会有影响
就这点区别了