Циклы Do-while с указателями на структуры оставляют меня с необработанными структурами или строками - PullRequest
0 голосов
/ 31 марта 2019

Таким образом, при запуске цикла do-while в нижней части указатель '> next' не создается, и поэтому не может быть nullptr.Как бы я мог просматривать бесконечное количество станций и перечислять их названия, пока петля работает правильно?

struct Station
{
    string name;
    Station *next;
};

int main()
{
    Station *index = NULL;
    Station *current = NULL;
    Station *pointer = NULL;

    string indexName = "Index";

    char addkey = 'n';
    char response;

    Station *newStation = new Station;
    index = newStation;
    index->name = indexName;

    current = index->next;

    cout << "Enter 'n' to add a New Station" << endl;
    cin >> response;

    pointer = index;

    if (response == addkey)
    {
        do
        {
            char addAgain;
            string newName;
            string fromStation;
            string placeHolder;

            cout << "Enter New Station Name" << endl;
            cin >> newName;

            cout << "Station List: " << endl;

            do 
            {
                cout << pointer->name << endl;
                pointer = pointer->next;
            } 
            while (pointer->next != NULL);

1 Ответ

0 голосов
/ 31 марта 2019

При инициализации index вы никогда не устанавливаете next, поэтому это ложное значение указателя. Вам нужно что-то вроде:

    Station *newStation = new Station;
    index = newStation;
    index->name = indexName;
    index->next = NULL; /* must be initialized */

Кроме того, я не уверен в ваших намерениях с current = index->next;. Однако, это, вероятно, не то, что вы делаете отступ.

Конечно, вы также захотите добавить новые станции в список, но я предполагаю, что вы ждете этого позже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...