私は多くの異なる質問をオンラインで見てきましたが、私が間違っていることを理解できません。私は非常に多くの異なることを試みたので、間違った方向に向かっているかもしれません。C Simple LinkedList
私は単なる単純なlinkedListをCで作ろうとしています。リストの接続を維持する方法を理解できないようです。
:
これは私のコードは、リストを作ることです
typedef struct node
{
double x; // x-coordinate of this point in the tour
double y; // y-coordinate of this point in the tour
struct node* next; // Pointer to the next node in the linked list
} Node;
私のノードのための構造体は、私はメイン
Node* addFront(Node* first, double x, double y) {
first = malloc(sizeof(Node));
if (first == NULL) {
first->x = x;
first->y = y;
first->next = NULL;
}
else {
Node * temp = malloc(sizeof(Node));
temp->x = x;
temp->y = y;
temp->next = first;
first = temp;
}
//Temp testing
int size = 0;
Node * current = first;
while (current->next != NULL) {
printf("(%.4f, %.4f)\n", current->x, current->y);
current = current -> next;
size++;
}
printf("Size: %d\n", size);
return first;
}
いくつかのノートの最初の= NULL空のノードを構成します最初のものがnullかどうかを確認する必要はありません...リストは、単にelseステートメントを使って構築できるはずです。 (私の考え)
if/elseステートメントを追加した後、C言語で無限ループと思われるものが得られました。ランダムメモリを指し示すだけで、最終的にセグメンテーションフォルトにつながります。
私はどこに向かうべきか分かりません。そんなに進んでいただきありがとうございます!
次のように見ることができます意味をなさない'first'が' NULL'ならば、 'first-> x = x;'のようにすることができます。これは、メモリを割り当てる前に 'malloc'が失敗したことを意味します。 – pzaenger