Не понимаю, почему функция display() показывает мне только первый элемент списка. Я думаю, что я сделал беспорядок с указателями, но я не могу понять, где. Я сравнил это с другим источником связанного списка, и кажется, что функция написана на хорошем уровне.C++ Связанный список ошибка печати
#include "stdafx.h"
#include <string>
#include <iostream>
using namespace std;
struct Node
{
int Data;
Node * next;
};
void initNode(struct Node *head,int n);
void AddNode(int n,Node* head);
void display(Node* head);
int main()
{
Node * head = new Node;
initNode(head,5);
display(head);
AddNode(10,head);
display(head);
AddNode(15,head);
display(head);
cin.get();
return 0;
}
void AddNode(int n,Node * head)
{
Node * node = new Node;
node->Data = n;
node->next = NULL;
Node * nextNode = head;
while(nextNode)
{
if(nextNode->next == NULL)
{
nextNode->next = node;
}
nextNode = nextNode->next;
}
}
void display(Node * head)
{
while(head)
{
cout << head->Data << " "<<endl;
head = head->next;
}
}
void initNode(struct Node *head,int n)
{
head->Data = n;
head->next = NULL;
}
Это другое. Ваша функция добавляет узлы в начале, в то время как OP пытается добавить их в конце. Обычно лучше добавлять в начале, если это возможно, но мы не знаем, что нужно OP. – interjay
@interjay - спасибо. Я обновил ответ – Sean