我想了解鏈接列表的代碼。我明白他們是如何工作的。 我在看一些代碼做動態內存和鏈表,我在這裏簡單的:C - 鏈接列表
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char *word;
struct node *next;
} node;
void display_word(node *start) {
node *start_node = start;
puts("");
for(; start_node != NULL; start_node = start_node->next) {
printf("%s", start_node->word);
}
}
node* create_node(char *input) {
node *n = malloc(sizeof(node));;
n->word = strdup(input);
n->next = NULL;
return n;
}
int main() {
node *start_node = NULL;
node *n = NULL;
node *next_node = NULL;
char word_holder[20];
for(; fgets(word_holder,80,stdin) != NULL; n = next_node) {
next_node = create_node(word_holder);
if(start_node == NULL)
start_node = next_node;
if(n != NULL)
n->next = next_node;
}
display_word(start);
}
所以程序創建用戶輸入每個字的鏈接列表,然後將其打印出來。 我不明白的是在main()函數中,每次將next_node分配給新節點以創建新節點,但start_node指向next_node,因此它會指向next_node每次創建的每個新節點?那麼如何保持清單呢?我們每次都不應該失去舊節點嗎?
有人可以解釋一下。
OFF TOPIC:你的名字是「miniJavaLearner」,你在C編碼?呵呵 :) –