对于链表,栈,队列,树函数参数的理解(未完)

来源:互联网 发布:网络伤感歌曲打包下载 编辑:程序博客网 时间:2024/05/01 03:02

对于最近学习的链表,栈,队列,二叉树(基础)的函数参数有了更深的理解。

对于这几个数据结构,可以采用静态,或者是链式存储和操作,但是它们函数的参数却是不一样的。

对于一些链式存储和操作的,有3种方法来返回头指针

1 在函数外新建头指针,然后函数返回头指针

2 用二级指针

3 用参数的引用(效果和二级指针一样)

链表(静态):

<span style="font-size:14px;">typedef struct list{    int *base;//数组指针    int lengh;//当前表的长度    int listsize;//空间大小}qlist;//初始化////此处用的是&l相当于传入l的地址,作用类似于传递指向l的指针void creat_(qlist &l,int initsize)//initsize为自定义的数组长度,需要把它负值给listsize;{    l.base=(int*)malloc(initsize*sizeof(int));//开辟了一个int数组大小为initsize    if(l.base==NULL)    {        cout<<"分配内存失败";    }    l.lengh=0;//置为空表    l.listsize=initsize;//当前空间大小}int main(){    qlist q;}</span>
此处传递的是struct list q,对于静态分配的,即是用数组表示的,所以它不要用指针指向a[0],只需要lengh来表示当前的长度即可,所以它不需要二级指针,或者是参数引用

链表(动态1参数的引用):           

<span style="font-size:14px;">typedef struct node{    int a;    struct node *next;}NODE,*PNODE;//构建链表void creat_(PNODE &head){    PNODE q,p;//定义头指针head,代替头指针球q(头指针不能动)    head=(PNODE)malloc(sizeof(NODE));//分配内存给head    if(head==NULL)    {        printf("分配内存失败");    }    head->next=NULL;    int num,num_,i;    scanf("%d",&num);    q=head;//代替头指针q    for(i=0;i<num;i++)    {        p=(PNODE)malloc(sizeof(NODE));//开辟一个节点,并让p指向它        scanf("%d",&num_);        p->a=num_;        q->next=p;//让上一个指针指向该节点(如果是第一个结点则是头指针)        q=p;//q指针也指向p指针指向的结点    }    q->next=NULL;}int main(){    PNODE head;}</span>

  (动态2:返回新建的头指针)

<span style="font-size:14px;">typedef struct node{    int a;    struct node *next;}NODE,*PNODE;//构建链表PNODE creat_(){    PNODE head,q,p;//定义头指针head,代替头指针球q(头指针不能动)    head=(PNODE)malloc(sizeof(NODE));//分配内存给head    if(head==NULL)    {        printf("分配内存失败");    }    head->next=NULL;    int num,num_,i;    scanf("%d",&num);    q=head;//代替头指针q    for(i=0;i<num;i++)    {        p=(PNODE)malloc(sizeof(NODE));//开辟一个节点,并让p指向它        scanf("%d",&num_);        p->a=num_;        q->next=p;//让上一个指针指向该节点(如果是第一个结点则是头指针)        q=p;//q指针也指向p指针指向的结点    }    q->next=NULL;    return head;}int main(){    pnode head;    head=creat_();}</span>
此处需要返回的是头指针,所以需要传递指针变量,而不是结构题变量

0 0
原创粉丝点击