*&L 和*L 的作用有什么不同

在单链表中的存储结构

typedef struct LNode{
       ElemType data;
       struct LNode *next;
}LNode, *LinkList; //此时LinkList是结构体struct LNode类型的指针的别名

LinkList L;//声明一个指针L,指向LNode类型
		//这句话等同于LNode *L;


Status InitList(LinkList &L){<span style="white-space:pre">	</span>//等同于Status InitList(LNode *&L)
	//构造一个空的线性表L。
	L=(LNode *)malloc(sizeof(LNode)); //产生头结点,并使L指向此头结点
	if(!L) exit(OVERFLOW);	//分配存储失败
	L->next=NULL;	//指针域为空
	return OK;
}//InitList

 

void main(){
	LinkList *L;
	InitList(L);
	DeleteList(L)
}

 在构造空的线性表L时,需要对传进去的参数L本身改变,所以需要用指针L的引用&L

如果

Status InitList(LinkList L){
}
括号中的L只是一个形参,无法对main函数中的L改变,从而产生错误。

虽然InitLis(L),表面上看起来对L初始化了,但实际上形参L,并未对main函数中的L初始化。

在Delete(L)时,提示错误。


  • 1
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值