Форум программистов, компьютерный форум CyberForum.ru

Не могу понять 2 строки кода функции из методички - C++

Восстановить пароль Регистрация
 
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
07.07.2013, 22:11     Не могу понять 2 строки кода функции из методички #1
Это код добавления элемента в линейный двунаправленный список. Не пойму 12 и 13 строки. Указатель pCurrent->next(указатель на след. элемент списка) всегда будет пустовать, т.к. в конце функции pCurrent=pAdd, а а в строке 13 указателю pAdd->next присваивается pCurrent->next, который так и не заполнился каким-либо адресом. Извините за много букв, надеюсь, понятно объяснил свое непонимание.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void add_line_double(dataType data, element *pCurrent)
{
  element *pAdd=new element;
  pAdd->info=data;
  if(!pHead)
  {
    pAdd->next=pAdd->previous=NULL;
    pHead=pAdd;
  }
  else
  {
    if(pCurrent->next) pCurrent->next->previous=pAdd;
    pAdd->next=pCurrent->next;
    pCurrent->next=pAdd;
    pAdd->previous=pCurrent;
  }
  pCurrent=pAdd;
}
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
zer0mail
2176 / 1859 / 187
Регистрация: 03.07.2012
Сообщений: 6,615
Записей в блоге: 1
07.07.2013, 22:37     Не могу понять 2 строки кода функции из методички #2
Нарисуй хотя бы три элемента двусвязного списка и "вклинься" в середину (после pCurrent).
А pCurrent=pAdd; вообще пустышка, т.к. pCurrent - значение указателя из стека параметров, поэтому при выходе из процедуры он пропадет.
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
07.07.2013, 22:48  [ТС]     Не могу понять 2 строки кода функции из методички #3
Цитата Сообщение от zer0mail Посмотреть сообщение
Нарисуй хотя бы три элемента двусвязного списка и "вклинься" в середину (после pCurrent).
А pCurrent=pAdd; вообще пустышка, т.к. pCurrent - значение указателя из стека параметров, поэтому при выходе из процедуры он пропадет.
Рисовал уже, аж 4 элемента) А по поводу пустышки не знаю, что сказать, т.к. в методичке pCurrent - это и глобальная переменная тоже, так что тут по идее должно быть вот так
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
void add_line_double(dataType data)
{
  element *pAdd=new element;
  pAdd->info=data;
  if(!pHead)
  {
    pAdd->next=pAdd->previous=NULL;
    pHead=pAdd;
  }
  else
  {
    if(pCurrent->next) pCurrent->next->previous=pAdd;
    pAdd->next=pCurrent->next;
    pCurrent->next=pAdd;
    pAdd->previous=pCurrent;
  }
  pCurrent=pAdd;
}
zer0mail
2176 / 1859 / 187
Регистрация: 03.07.2012
Сообщений: 6,615
Записей в блоге: 1
07.07.2013, 22:56     Не могу понять 2 строки кода функции из методички #4
Это правильный вариант, хотя такое использование глобальных переменных не есть гуд. Лучше бы функции передавали, после кого вставить, а она бы возвращала указатель на новый элемент.
Yandex
Объявления
07.07.2013, 22:56     Не могу понять 2 строки кода функции из методички
Ответ Создать тему
Опции темы

Текущее время: 08:07. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru