ノードを追加した後にリンクリストを印刷しようとしています。私は、リストにリンク済みリスト無限ループC
Node **nodeArray;
nodeArray = malloc(10 * sizeof(Node *));
int i;
for (i = 0; i < 10; i++) {
nodeArray[i] = malloc(sizeof(Node));
}
if (userChoice == 'a')
add(&nodeArray, setNumber);
void add(Node ***nodeArray, int setNumber) {
char userString[5];
printf("Please enter some data: ");
scanf("%s", userString);
Node *head = *nodeArray[setNumber]; /* head pointer to first element of array (dummy) */
Node *newNode = malloc(sizeof(Node)); /* new node to be added to array */
strncpy(newNode->data, userString, sizeof(newNode->data)); /* copies string entered by the user to data field of new node */
newNode->next = NULL; /* initializes next field of new node to NULL */
Node *tmp = head; /* pointer to head of list */
while (!tmp->next) {
tmp->next = newNode; /* inserts new node into array */
tmp = newNode; /* points head to newly added node */
}
tmp = head; /* points tmp back to head of list */
printf("List is: ");
while (tmp->next) {
printf("%s", (tmp->data));
tmp = tmp->next;
}
}
を開始するためにダミー・ノードを持っている。しかし、私は印刷するとき、私は新しく追加したノードのデータフィールドをプリントアウトし、無限ループを取得します。リンクされたリストにひどい... ....私は間違って何をしていますか? newNodeとnewNodeにnewNode->次のポイントへ
while (!tmp->next) {
tmp->next = newNode; /* inserts new node into array */
tmp = newNode; /* points head to newly added node */
}
ヘッドポイント:
を[MCVE]を入力してください。物語のように伝える必要はありません。 MCVEを提示するのは、ブロックの説明だけでなく、そのような簡単なコードを自分のためだけに読むことができるからです。また、1つのブロックにすべてが含まれているので、必要に応じて誰でも簡単にコピーできます。 – kaylum
'nodeArray'とは何ですか? 'Node * head = * Node [setNumber];という意味ですか? '? – Sanich
編集の詳細を参照してください。 – namarino