回 帖 发 新 帖 刷新版面

主题:请求帮助,链表问题

#include<stdio.h>
#include<stdlib.h>

enum{ERROR=0,OK=1};

typedef struct LinkList
{
    int data;
    struct LinkList*next;
}LinkList;

int CreateList(LinkList *L)
{
    int i;
    
    L=(LinkList*)malloc(sizeof(LinkList));
    L->next=NULL;
    
    /*逆序创建链表L*/
    for(i=0;i<4;++i)
    {
        LinkList*p=(LinkList*)malloc(sizeof(LinkList));
        
        p->data=i+1; 
        p->next=L->next;
        L->next=p;    
    }
     

    
    return OK;
}

/*链表的输出*/
void print(LinkList*L){
    LinkList *p=L->next;
    int e;
    while(p){
        e=p->data;
        printf("%d ",e);
        p=p->next;
    }
    printf("\n");
}

int main(void)

   /*创建链表LA*/ 
   LinkList*La;
   CreateList(La);
   printf("输入LA:");
   print(La);
   
   /*创建LB链表*/
   LinkList*Lb;
   CreateList(Lb);
   printf("\n输入Lb:"); 
   print(Lb);
   
   return 0;
}

为什么输出总是提示我错误,而且当我把CreateList(LA)的内容在main()函数中展开时,为什么又好使了!请求帮助啊!。。
这个CreateList到底错在哪?

回复列表 (共2个回复)

沙发

如果你传递的是C++,那么把形参写成int CreateList(LinkList& *L)就可以了,否则要传递一个**L
原因就是你在函数里改变了指针的值而非指针指向的内容,而对指针本身的改变是不能直接体现在原函数中的

板凳


谢谢

我来回复

您尚未登录,请登录后再回复。点此登录或注册