我正在嘗試製作一個節點數組,並從S []數組中輸入值。但我不斷收到分段錯誤。 我的結構是這樣的:鏈接列表中的數組在C中無法正常工作
typedef struct Node {
int num;
struct Node *next;
}ListNode;
S [10]初始化數組隨機數:
printf("list is:");
for(i=0;i<10; i++)
{
RN= (random()+1);
S[i]=RN;
printf("%d ",S[i]);
}
printf("\n");
這是我如何初始化我的節點陣列:
ListNode *bucket[Radix];
for(j=0; j<Radix; j++)
{
bucket[i]=(ListNode*)malloc(sizeof(ListNode));
bucket[i]->next=NULL;
}
而且這是我用來從S []讀取數組數字的函數到鏈表,數組bucket []中:
for(y=0;y<(sizeof(S)/sizeof(int));y++) // S is size of a normal array
{
digit=bucketNumber(S[y],1);// returns the first digit values
pointer= bucket[digit];
number= S[y];
insert_tail(pointer, number);
}
我insert_tail功能是這樣的:
ListNode *insert_tail(ListNode *tail, int data)
// insert and element at tail
{
if (tail==NULL)
{ tail=(ListNode *)malloc(sizeof(ListNode));}
else
{
while(tail->next !=NULL)
tail->next = (ListNode *)malloc(sizeof(ListNode));
tail= tail->next;
}
tail->num= data;
tail->next=NULL;
}
這是bucketNumber功能:
int bucketNumber(int num,int digit)
{
int x, y;
y= 10*digit;
x= num%y;
if(digit>=2)
{
num= num%y;
x= num/(y/10);
}
return (x);
}
我認爲段錯誤的原因是,我的功能也沒有創造數組中的鏈接正確。我不確定你是否會有其他錯誤!
在調試器中運行您的程序。 – kaylum
要稍微擴展kaylum的觀點,使用調試器運行程序通常很簡單,這樣當發生seg故障時,您可以清楚地看到它發生了什麼行。考慮到這一點,你可能會或可能不會顯示所有相關的代碼(儘管在那裏做了很多努力),但人們可能無法幫助你。如果您需要幫助確定seg-fault行,請發表評論與您的開發環境細節。 –
我正在研究宙斯。另外,我只是使用調試器,它在insert_tail函數中指出了一個錯誤。我試圖修復它,但它仍然無法正常工作。 – Sarah