Пока цикл выполняет код, я не понимаю - PullRequest
0 голосов
/ 12 октября 2019

Может кто-нибудь объяснить, как работает эта программа? Я понятия не имею, что происходит в цикле 'while'

struct L {
int d;
L *p;}

L* l = new L;
l->d = 3;

l->p = new L;
l->p->d = 5; //Is this a substructure?
l->p->p = l;

while(l->d < 7) {
    cout << l->d++ << ' ';
    l = l->p; // ??
}

1 Ответ

1 голос
/ 12 октября 2019
// L is a data structure also known as a linked list. It has:
struct L
{
  int d; // a value
  L *p;  // a pointer to the next element
}

// it creates the first element of the linked list, and assigns it a value of 3
L* l = new L;
l->d = 3;

// then makes it point to a new element, with value 5
l->p = new L;
l->p->d = 5;

// the new element's pointer to the next element is then set to be 
// the first item in the list, hence creating a circular list of 2 elements
// .->| 3 |-->| 5 | -.
// '-----------------'
l->p->p = l;

// then it loops through the list, printing the value of the current element 
// and increasing it to 1 every time, and stopping when the value of the current 
// element is 7 or more
while(l->d < 7) {
    cout << l->d++ << ' '; // prints the value of the current element and increases it
    l = l->p; // moves to the next node
}

Вот очень хорошая статья, которая поможет вам понять, что такое связанный список и как его правильно использовать: https://www.learn -c.org / en / Linked_lists

Надеюсь, это было достаточно ясно!

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