Я собираюсь создать привязку, которая может вставляться и отображаться до сих пор:
struct Node {
int x;
Node *next;
};
Это моя функция инициализации, которая будет вызываться только для первого Node
:
void initNode(struct Node *head, int n){
head->x = n;
head->next = NULL;
}
Чтобы добавить Node
, и я думаю, что причина, по которой мой связанный список не работает правильно, находится в этой функции:
void addNode(struct Node *head, int n){
struct Node *NewNode = new Node;
NewNode-> x = n;
NewNode -> next = head;
head = NewNode;
}
Моя main
функция:
int _tmain(int argc, _TCHAR* argv[])
{
struct Node *head = new Node;
initNode(head, 5);
addNode(head, 10);
addNode(head, 20);
return 0;
}
Позвольте мне запустить программу, поскольку я думаю, что она работает. Сначала я инициализирую голову Node
как Node
следующим образом:
head = [ 5 | NULL ]
Затем я добавляю новый node с n = 10 и передаю главу в качестве аргумента.
NewNode = [x | next], где следующие точки на голове. И затем я меняю место, где head указывает на NewNode, так как NewNode является первым node в LinkedList сейчас.
Почему это не работает? Я был бы признателен за любые намеки, которые могли бы заставить меня двигаться в правильном направлении. Я думаю, LinkedList немного сложно понять.
Когда я печатаю это, он возвращает только 5: