リンクリストに関しては、私が何をしているのか分かりません。ここで何かがセグメンテーションフォールトエラーを引き起こしていますが、私はそれが混乱していることは言うまでもなく、どこにリンクされている可能性があるかを知るためにリンクリストについて十分に知りません。私はデバッグのためのコードを持っていましたが、投稿する前にそれを取り出しました。コードはmainのfor文に行き着いているようだが、エラーが出る。ユーザーは、印刷するノードの数を入力し、多くのノードに乱数を印刷します。各行には10個の文字が印刷されます。リンクされたリストでセグメンテーションフォールトを取得する
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
struct node_def
{
int data;
struct node_def *next;
};
typedef struct node_def node;
node *makeNode (int val);
node *insertFront(node *head,node *new);
void printList(node *head);
int numNodes = 0;
int main()
{
srand(time(0));
int i = 0;
node *head = NULL;
node *new = NULL;
printf("How many nodes? ", numNodes);
scanf("%d", &numNodes);
printf("\n");
head = insertFront(head, new);
for(i = 0; i < numNodes; ++i)
{
makeNode(numNodes);
/* printList(head);*/
/*insertFront(head, new);*/
}
printList(head);
printf("\n");
return 0;
}
node *makeNode (int val)
{
node *head = NULL;
node *new = malloc(sizeof(node));
new->data = rand() % 10000;
new->next = NULL;
if (head == NULL)
head = new;
return new;
}
node *insertFront(node *head, node *new)
{
new->next = head;
return head;
}
void printList(node *head)
{
int j = 0;
for(j = 0; j < numNodes; ++j)
{
while (head != NULL)
{
printf(" %4d", head->data);
head = head->next;
}
if(j % 10 == 0)
printf("\n");
}
return;
}
プログラムが動作していませんか?非常に具体的な説明。どのような入力をしますか?コアダンプとは別に、どのような出力を得ますか?デバッガはあなたに何を伝えますか?どのくらいの診断印刷が追加されましたか、それが何を伝えましたか?アサーションを使用できますか? –
@JonathanLefflerコードはmainのfor文に行き着いているようですが、エラーが出ます。ユーザーは、印刷するノードの数を入力し、多くのノードにはランダムな番号が割り当てられて印刷されます。そのうち10行は1行に印刷されます。 – mychem97
'new = NULL'で' insertFront'を呼び出します。おそらくデバッガの使い方を学ぶべきでしょう。 – Siguza