gpt4 book ai didi

c - 获取链表大小时出现段错误

转载 作者:太空宇宙 更新时间:2023-11-04 08:55:44 25 4
gpt4 key购买 nike

调用函数 getLength 时出现段错误。我编辑了代码,现在我得到的长度是 0 而不是 5。

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

node *headptr;
node *topptr;

typedef struct node
{
int value;
struct node *nextPtr;

}node;

void initializeLinkedList(node *headptr, node *topptr)
{
int i=0;
headptr = (node*)malloc(sizeof(node));
topptr = (node*)malloc(sizeof(node));
topptr = headptr;


headptr->value=i;
headptr->nextPtr = (node*)malloc(sizeof(node));
for(i=1;i<5;i++)
{

headptr = headptr->nextPtr ;
headptr->value=i;
headptr->nextPtr=(node*)malloc(sizeof(node));
printf("val is %p \n ", *headptr);
}

headptr->nextPtr = NULL;


}

int getLength(node *topptr)
{
int i=0;
node* local;
local = topptr;
while(local!=NULL)
{

local=local->nextPtr;
i++;
}
return i;

}


int main()
{

initializeLinkedList(headptr,topptr);
printf("val is %d \n", getLength(topptr));
return 0;

最佳答案

void initializeLinkedList(node *headptr, node *topptr)

改成

void initializeLinkedList(node *headptr, node** topptr)

并相应地更改您的代码...

还有很多其他问题......

当你需要一个指针时,只需定义指针,不要分配内存并覆盖指针..

如果我必须编码

void initializeLinkedList( node **topptr)
{
int i=0;
node* headptr = (node*)malloc(sizeof(node));
headptr->value=i;

*topptr = headptr;


for(i=1;i<5;i++)
{

headptr->nextPtr = (node*)malloc(sizeof(node));
headptr->nextPtr->value=i;
headptr->nextPtr->nextPtr=NULL;
headptr=headptr->nextPtr;

}

}



int main()
{
node* topptr;
initializeLinkedList(&topptr);
printf("val is %d \n", getLength(topptr));
return 0;
}

关于c - 获取链表大小时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17197843/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com