在线性表的实现中,头插法和尾插法在函数参数中为什么么用的Node*&head?目前在参考书上的代码实现线性表的操作。去掉&符号,编译依然正确。一枚找工作的大四狗,汪汪。voidInsert_Head(Node*&head,constint&val)//头插法{Node*ptr=newNode();ptr->next=head;ptr->data=val;head=ptr;}voidInsert_Back(Node*&head,Node*&back,constint&val)//尾插法{Node*ptr=newNode();ptr->data=val;ptr->next=NULL;if(head==NULL)head=back=ptr;else{back->next=ptr;back=ptr;}}
2 回答
慕仙森
TA贡献1827条经验 获得超7个赞
你注意一下head和back这两个定义成Node*&类型的参数,在函数内部都有赋值操作。&表示引用,我想你应该知道的吧,*&就是指针的引用,这个应该也好理解。引用有一个特点就是,修改型参的值同时也会修改实参的值,但如果不是引用,修改了形参的值对实参不会有影响就这点区别了
萧十郎
TA贡献1815条经验 获得超13个赞
指针引用既修改了指针的地址,又修改了指针对应的值.#include usingnamespacestd;voidswapone(int*v1,int*v2){int*temp=v2;v2=v1;v1=temp;cout<<*v1<<""<<*v2<} voidswaptwo(int*&v1,int*&v2){int*temp=v2;v2=v1;v1=temp;cout<<*v1<<""<<*v2<} intmain(intargc,char*argv[]){inta=20,b=30;int*p=&a;int*q=&b;cout<cout<<"swapone()**************************"<
swapone(p,q); cout<cout<<*p<<""<<*q<
cout<<"***********************************"< cout<<"swaptwo()**************************"< swaptwo(p,q); cout<<*p<<""<<*q<cout< cout<<"***********************************"<
return0;}运行结果:0x7fff5fbff74c0x7fff5fbff748swapone()**************************30200x7fff5fbff74c0x7fff5fbff7482030***********************************swaptwo()**************************302030200x7fff5fbff7480x7fff5fbff74c***********************************
添加回答
举报
0/150
提交
取消