указатели — Распечатать круговой связанный список в C ++?

Я хочу распечатать круговой связанный список. Как бы вы их распечатали?

Этот для регулярного связанного списка. И если я реализую это для кругового списка, он зацикливается навсегда. Любая идея ограничить и распечатать только один круг?

struct node* curr_node_1 = head;
while ( curr_node_1 != nullptr )
{
cout << curr_node_1->p_data << ", ";
curr_node_1 = curr_node_1->p_next;
}

И моя структура узла следующая

 struct node
{
int            p_data;
struct node*   p_next;

node(node* head, int data)
{
p_next = head;
p_data = data;
}

explicit node(int data)
{
p_next = nullptr;
p_data = data;
}
};

1

Решение

Просто замените конечное условие столбца на head вместо nullptr и позаботьтесь о том, чтобы цикл проходил вообще:

struct node* curr_node_1 = head;
if(curr_node_1 != nullptr)
{
do
{
cout << curr_node_1->p_data << ", ";
curr_node_1 = curr_node_1->p_next;
} while ( curr_node_1 != head );
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]