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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
#1

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

07.07.2013, 22:11. Просмотров 420. Ответов 3
Метки нет (Все метки)

Это код добавления элемента в линейный двунаправленный список. Не пойму 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;
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.07.2013, 22:11
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Не могу понять 2 строки кода функции из методички (C++):

не могу понять описание, требуеться пояснение кода - C++
суть такая нашел статью по этому адресу, суть создания dll в с++. Вот ссылка: http://www.hardline.ru/1/5/1534/ когда стал изучать все...

Не могу понять смысл данного задания, и написание его кода - C++
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец с сохранением порядка следования....

строки в С++.. не могу их понять.. - C++
задание такое преобразовать строку, содержащую выражение на Си с операциями (= , == , != , а+= , а-=), в строку содержащую эти же...

функции,не могу понять ошибку - C++
// 432424.cpp.cpp : Defines the entry point for the console application. // #include "stdio.h" #include "stdafx.h" #include...

Не могу понять условие в функции - C++
Здравствуйте. Пример из книги. Подскажите, пожалуйста, зачем мы определяем переменную ret размером строки, а потом в условии...

Не могу понять ошибку функции TextOut - C++
мне нужно вывести строку в окно формы. и пишу такой код где S - char S; ошибку выдает след: error C2664: 'TextOut': cannot convert...

3
zer0mail
2354 / 1984 / 198
Регистрация: 03.07.2012
Сообщений: 7,117
Записей в блоге: 1
07.07.2013, 22:37 #2
Нарисуй хотя бы три элемента двусвязного списка и "вклинься" в середину (после pCurrent).
А pCurrent=pAdd; вообще пустышка, т.к. pCurrent - значение указателя из стека параметров, поэтому при выходе из процедуры он пропадет.
1
ivan92
0 / 0 / 1
Регистрация: 30.01.2013
Сообщений: 188
07.07.2013, 22:48  [ТС] #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;
}
0
zer0mail
2354 / 1984 / 198
Регистрация: 03.07.2012
Сообщений: 7,117
Записей в блоге: 1
07.07.2013, 22:56 #4
Это правильный вариант, хотя такое использование глобальных переменных не есть гуд. Лучше бы функции передавали, после кого вставить, а она бы возвращала указатель на новый элемент.
0
07.07.2013, 22:56
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.07.2013, 22:56
Привет! Вот еще темы с ответами:

Вывод строки. Не могу понять, в чем дело - C++
Добрый вечер. В программе на вход подается строка типа "слово1-слово2", содержащаяся в переменной str. Я слово 1 помещаю в переменную...

Не могу понять как правильно считать строки - C++
Задача: Задача1. «Поиск в строке» Самым популярным вопросом прошлого контеста был вопрос о сколь угодно длинных строках. По...

Строки в С++, не могу понять что неправильно в программе - C++
Необходимо: 1) Найти количество слов в строке, 2) вывестии все слова в порядке возрастания длинн, 3) вычислить количество одинаковых...

Строки (массив char), указатели. Не могу понять логику! Help! - C++
Вообщем проблема в том что выводятся лишние символы в строках.. хотя в них есть признак окончания строк - нулевой байт я новичок в С...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru