Я пытаюсь перейти от почти полностью Java-фона к освоению с C ++.Я практикуюсь, пытаясь создать базовый связанный список.
#include <iostream>
#include <string>
using namespace std;
struct node
{
string data;
node *next = NULL;
};
class linkedlist
{
public:
node *head;
public:
linkedlist()
{
head = NULL;
}
void addNode(string s)
{
node *newNode = new node;
newNode->data = s;
if(head == NULL)
head = newNode;
else
{
node *temp = head->next;
while(temp != NULL)
temp = temp->next;
temp = newNode;
}
}
void printList()
{
node *temp = head;
while(temp != NULL)
{
cout << temp->data << '\n';
temp = temp->next;
}
}
};
Проблема в том, что когда я добавляю новый узел, используя void addNode(string s)
, он не появляется, когда я пытаюсь напечатать список(начиная с головы) с void printList()
.
Например:
int main(int argc, const char * argv[])
{
int n;
string str;
linkedlist list;
cout << "Please enter the number of strings you'd like to enter:\n";
cin >> n;
for(int i = 0;i < n;i++)
{
string temp;
cout << "Enter string #" << i + 1 << '\n';
cin >> temp;
list.addNode(temp);
}
cout << "This is your linked list: ";
list.printList();
return 0;
}
Используя main () выше, мои результаты становятся:
ЭтоВаш связанный список: (строка 1)
Я почти уверен, что неправильно использую указатели, но не понимаю почему.Я сделал столько копаний, сколько смогу, чтобы кое-что прояснить, как я могу поступать неправильно, но я ничего не понимаю.
Спасибо за любые разъяснения, которые вы, ребята, можете предоставить.