首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

【单链表中对链表L进展操作究竟怎样确定传不传地址?】

2012-07-30 
【单链表中对链表L进行操作究竟怎样确定传不传地址?】举个例子:C/C++ codeStatus ListInsert(LinkList L,int

【单链表中对链表L进行操作究竟怎样确定传不传地址?】
举个例子:

C/C++ code
Status ListInsert(LinkList L,int i,ElemType e) /* 算法2.9。不改变L【问题:不是说要传地址才能对L进行修改么?这里没传地址,不能修改L,那又怎么进行插入操作?数据结构没学好,希望大家帮帮忙】 */ { /* 在带头结点的单链线性表L中第i个位置之前插入元素e */   int j=0;   LinkList p=L,s;   while(p&&j<i-1) /* 寻找第i-1个结点 */   {     p=p->next;     j++;   }   if(!p||j>i-1) /* i小于1或者大于表长 */     return ERROR;   s=(LinkList)malloc(sizeof(struct LNode)); /* 生成新结点 */   s->data=e; /* 插入L中 */   s->next=p->next;   p->next=s;   return OK; }


[解决办法]
实参是一个临时变量,是对你传递的参数的一个拷贝,无论你传递的是什么类型,参数本身并没有传递给函数,所以你传递的参数也都是无法修改的。即便是传递指针,指针本身也是无法修改的,但是你可以修改指针指向的空间,指针实参以及函数里获取的那个临时变量锁指向的空间都是一样的,所以修改临时变量指向的空间就是修改了实参指向的空间,从而达到了修改外部变量的目的。所以对于L,你不能修改的是L这个指针,但是你可以修改L指向的空间,比如向它指向的空间添加元素。

热点排行