永发信息网

链表初始化定义头指针(只是个头指针,没有数据域),出现程序崩溃

答案:1  悬赏:0  手机版
解决时间 2021-02-09 13:31
  • 提问者网友:活着好累
  • 2021-02-09 04:46
#include
#include
#include

typedef struct Node
{
int data;
struct Node *next;

}Node, *pt_Node;

//初始化生成头结点
static int InitList(pt_Node L)//为什么是*L才正确???就这里也不懂
{
L = (pt_Node)malloc(sizeof(Node));

if (!L)
{
return -1;
}
L->next = NULL;
return 0;

}

static int ListLenth(pt_Node L)
{
int i = 0;
pt_Node p = L->next;
while (p)
{
i++;
p = p->next;

}
return i;
}
int main(void)
{
int lenth;
pt_Node link;//不能是*link?为什么
InitList(link);
lenth = ListLenth(link);
printf("the lenth is %d", lenth);
return 0;
}
最佳答案
  • 五星知识达人网友:低音帝王
  • 2021-02-09 05:47
这个代码的流程 ,是在主函数中定义一个头节点link
然后通过函数InitList来给头节点赋值。
既然要给link赋值,就需要参数是link的指针类型,否则无法传回主函数。
于是需要定义成
static int InitList(pt_Node *L)
同时在函数中给*L赋值。
调用的时候 用InitList(&link);
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯