調用函數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;
}
計數在列表中的元素時,你爲什麼要分配的東西?你只需要迭代列表並增加一個計數器。 – Max
我其實並沒有看到上面提到的問題,只是一個聲明和一些代碼。 –
我同意Max,我編輯了代碼,仍然沒有得到正確的結果。 – user968000