您的位置:首页 > 理论基础 > 数据结构算法

数据结构链表中LinkList& L中&的作用

2014-05-04 18:33 357 查看
代码:

#include<stdio.h>

#include<malloc.h>

#define ERROR 0

#define OK 1

#define ElemType int

typedef struct LNode

{

 int data;

 struct LNode *next;

}LNode,*LinkList;

int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&

// 创建含有n个元素的单链表

  LinkList p,q;

  int i;

  ElemType e;

  L = (LinkList)malloc(sizeof(LNode));

  L->next = NULL;              // 先建立一个带头结点的单链表

  q = (LinkList)malloc(sizeof(LNode));

  q = L;

  for (i=0; i<n; i++) {
scanf("%d", &e);

     p = (LinkList)malloc(sizeof(LNode));  // 生成新结点

p->data=e;
p->next=NULL;
q->next=p;
q=q->next;

  }

  return OK;

}

int LoadLink_L(LinkList L){

// 单链表遍历

 LinkList p = L->next;

 if(!p)printf("The List is empty!"); 

 else

 {
printf("The LinkList is:");
while(p)   
{
printf("%d ",p->data);
p=p->next;   
}

 }

 printf("\n");

 return OK;

}

int main()

{

    LinkList T;

 int n;

 printf("Please input the init size of the linklist:\n");

 scanf("%d",&n);

 printf("Please input the %d element of the linklist:\n", n);

 if(CreateLink_L(T,n))     // 判断链表是否创建成功,请填空

 {
printf("A Link List Has Created.\n");
LoadLink_L(T);

 }

}

问题:int CreateLink_L(LinkList& L,int n){ //问题:为什么这里要加&

解答:一般情况,向函数传递指针类型的参数,可以让函数改变指针指向的内容,并将改变的效果返回;这里要改变指针变量L本身的值,使它指向新开辟的内存空间L =   (LinkList)malloc(sizeof(LNode)),而不是要改变L所指向的内容的值,所以,要么向函数传递L的引用,要么传递指向L的指针(指向指针的指针)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: