【数据结构】【顺序表】SqList *&L是什么意思
voidCreatList(SqList*&L,ElemTypea[],intn)我是到后面两个定义的是数组和数组长度那么SqList*&L是什么意思,为什么放在Elem...
void CreatList(SqList *&L , ElemType a[] , int n)
我是到 后面两个定义的是数组和数组长度
那么
SqList *&L是什么意思,
为什么放在ElemType a[] , int n前面定义?
void CreatList(SqList *&L , ElemType a[] , int n)
我是到 后面两个定义的是数组和数组长度
那么
SqList *&L是什么意思,
为什么放在ElemType a[] , int n前面定义?
L是什么内涵 展开
我是到 后面两个定义的是数组和数组长度
那么
SqList *&L是什么意思,
为什么放在ElemType a[] , int n前面定义?
void CreatList(SqList *&L , ElemType a[] , int n)
我是到 后面两个定义的是数组和数组长度
那么
SqList *&L是什么意思,
为什么放在ElemType a[] , int n前面定义?
L是什么内涵 展开
5个回答
展开全部
你好,楼主是否学过引用?
比如两个变量交换。
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上。
如果对这块还有疑问,可以追问。
比如两个变量交换。
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上。
如果对这块还有疑问,可以追问。
光点科技
2023-08-15 广告
2023-08-15 广告
通常情况下,我们会按照结构模型把系统产生的数据分为三种类型:结构化数据、半结构化数据和非结构化数据。结构化数据,即行数据,是存储在数据库里,可以用二维表结构来逻辑表达实现的数据。最常见的就是数字数据和文本数据,它们可以某种标准格式存在于文件...
点击进入详情页
本回答由光点科技提供
展开全部
SqList *&L是将要建立的顺序表指针给 &L
在调用CreatList(SqList *&L , ElemType a[] , int n)后
我们只要使用SqList *&L就可以使用顺序表了
在调用CreatList(SqList *&L , ElemType a[] , int n)后
我们只要使用SqList *&L就可以使用顺序表了
追问
顺序表指针是指第一个表元素的地址吗?
为什么&L可以作为指针变量呢,&L不是一个地址吗,是固定的值吗?
追答
一般来说void CreatList(SqList &L , ElemType a[] , int n)或者
void CreatList(SqList* L , ElemType a[] , int n)
这样L作为一个指向链表头的指针,L指向顺序表第一个元素
而CreatList(SqList *&L , ElemType a[] , int n)则变成&L指向链表头,&L是个地址,其指由程序分配
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
简单来说,带上&是对线性表本身操作,只带*是相当于一个复制品,最终结果不会影响到线性表本身,所以插入删除都要带&,而判断之类的不需要加&
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2012-10-25
展开全部
SqList *&L就是顺序表
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你好
*L表示指针
&表示应用型(地址可以改变)
Sqlist*&L表示定义一个地址可以被改变的指针
*L表示指针
&表示应用型(地址可以改变)
Sqlist*&L表示定义一个地址可以被改变的指针
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询