При обходе списка ссылок для чтения данных моя функция печатает только до предпоследнего узла, предложите способ распечатать весь список

Я сделал связанный список на С++. Для которого у меня есть функция с именем: ListTraverse(). Который принимает переменную-указатель типа Node, где Node — это мой класс. Пожалуйста, предложите мне метод, при котором он печатает до последнего узла. Вот вызов функции:

      ListTraverse(&head);

А вот и определение функции:

      void ListTraverse(Node* node)
{
//Prints upto penultimate node
  while (node->next != NULL)
  {
      cout << "\nNode details:\t"
         << node->read_data();
      node=node->next;
  }
}

И вот вам весь код.

      #include <bits/stdc++.h>
#include <stdlib.h>
#include<typeinfo>
using namespace std;
class Node
{
  private:
  int data;

  public:
  Node *next;
  void push_data(int x)
{
    data = x;
}
int read_data()
{
    return data;
}
};
void ListTraverse(Node *);
int main()
{
 system("CLS");
 //Creating Node type variables
 Node head, second, tail;
int num, choice;
//Getting user input
cout << "Enter a number for head:\t";
cin >> num;
head.push_data(num);
cout << "Enter a number for second:\t";
cin >> num;
second.push_data(num);
cout << "Enter a number for tail:\t";
cin >> num;
tail.push_data(num);
//Assigning pointers to link up
head.next = &second;
second.next = &tail;
tail.next = NULL;
cout << "If you want to read data press 1:\t";
cin >> choice;
switch (choice)
{
case 1:
    ListTraverse(&head);
    break;
default:
    cout << "Invalid choice";
    break;
}
return 0;
}
 //Funtion to print Data
void ListTraverse(Node* node)
{
//Prints upto penultimate node
while (node->next != NULL)
{
    cout << "\nNode details:\t"
         << node->read_data();
    node=node->next;
}
}

1 ответ

Вам следует переформулировать свой вопрос. Кажется, что

моя функция печатает только до предпоследнего узла

это проблема.

вы хотели напечатать весь список, а не предпоследний. И исправление

      void ListTraverse(Node* node)
{
//Prints upto the last node
  while (node)
  {
      cout << "\nNode details:\t"
         << node->read_data();
      node=node->next;
  }
}
Другие вопросы по тегам