你好,楼主是否学过引用? 比如两个变量交换。 swap(int x, int y) { int temp =x; x = y; y = temp; } swapByRef(int &x,int &y) { int temp =x; x = y; y = temp; } void main() { int x = 1,y = 2; swap(x,y); swapByRef(x,y); } 你看看上面第二种才会真正交换x,y的值。这就是引用的作用。 书归正传,void CreatList(SqList *&L , ElemType a[] , int n)为什么不是 void CreatList(SqList *L , ElemType a[] , int n)? 如果是后一种情况,相当于什么意思呢?比如我现在要创建一个头指针是Head的链表。语句是这样的: SqList * Head = NULL; int a[10] = {......}; CreatList(Head, a,10); 本来我希望执行完后,Head应该是包含10个节点的链表的头指针,结果,你会发现,Head = NULL。 因为这里在CreateList传参的时候,实际意思是让L 指向Head所指的地址。 此时的L跟Head并不是同一个指针,而是指向同一个地址的不同指针。所以你对L的操作并没有发生到Head身上,就像前面的交换函数一样。 而SqList *&L不同,它的意思是,L是对Head的引用,后面对L的操作,就相当于对Head的操作,所以这种情况下对L的更改才会发生到Head上。
【数据结构】【顺序表】SqList *&L是什么意思
最新推荐文章于 2024-06-23 23:29:24 发布