引用在链表中的应用

来源:互联网 发布:申万宏源软件中心 编辑:程序博客网 时间:2024/05/22 11:45
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<malloc.h>struct book{int name;                                        //问题:链表引用问题 struct book *next;};typedef book *b;                            //定义结构体createhead(b &head)//这里必须加引用{head=(b)malloc(sizeof(book));if(!head) // 存储分配失败                              {exit(0);}head->next=NULL;}addbody(b head,int a)//这里可不加引用{   b l,pnew,ptail;l=head;while(l->next){l=l->next;}    pnew=(b)malloc(sizeof(book));pnew->name=a;pnew->next=NULL;l->next=pnew;}void main(){int a,n;b head,i;createhead(head);scanf("%d",&n);while(n){scanf("%d",&a);    addbody(head,a);n--;}i=head->next;while(i){ printf("%d ",i->name);i=i->next;}}        
将一个结构体变量中的数据传递给另一个函数,有下列3种方法:

    1.用结构体变量名作参数。一般较少用这种方法。
    2.用指向结构体变量的指针作实参,将结构体变量的地址传给形参。
    3.用结构体变量的引用变量作函数参数


typedef LNode *LinkList;这样定义后linklist就为一个结构体指针,

开辟空间时(linklist)malloc。。。那个linklist后面就不用加星号了

也可以typedef struct LNode{

...

}*LinkList

效果是一样的


总结:

第一个传参:

结构体指针做调用函数的参数时,为了能在主函数中保持改变,形参必须是指针的指针或者引用。

和非指针变量作参数一样,要想在主函数中通过调用函数来改变某值,必须传过来指针。而指针做参数时,必须传过来指针的指针。

第二个传参:

因为头节点没必要改变,所以直接传指针,不用引用。




0 0
原创粉丝点击