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

Указатели и двусвязные списки - C++

Восстановить пароль Регистрация
 
Sentipar
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 26
05.03.2014, 23:48     Указатели и двусвязные списки #1
Уважаемые форумчане!
Учусь по книжке Страструпа для начинающих. Вот пример кода:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream>
#include "1.h"
using namespace std;
 
int main() {
    
    Link* norse_gods = new Link("Thor", 0, 0);
    norse_gods = new Link("Odin", 0, norse_gods);
    norse_gods->succ->prev = norse_gods;
    norse_gods = new Link("Freia", 0, norse_gods);
    norse_gods->succ->prev = norse_gods;
    
}
и хедер:
C++
1
2
3
4
5
6
7
8
9
10
#include <iostream>
using namespace std;
 
struct Link {
    string value;
    Link* prev;
    Link* succ;
    Link(const string& v, Link* p = 0, Link* s = 0):
        value(v), prev(p), succ(s) {}
};
Этот кода взят из примера создания друмерных списков из 17 главы.
Я знаю, что оператор -> осуществляет доступ к членам класса через поинтер на объект этого класса. Но не могу понять что делает это выражение:
C++
1
norse_gods->succ->prev = norse_gods;
Заранее спасибо за уделённое время.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
05.03.2014, 23:48     Указатели и двусвязные списки
Посмотрите здесь:

ДВУСВЯЗНЫЕ СПИСКИ C++
C++ ДВУСВЯЗНЫЕ СПИСКИ!!!
двусвязные списки C++
Двусвязные списки C++
Шаблонные двусвязные списки. C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.03.2014, 00:02     Указатели и двусвязные списки #2
norse_gods->succ - получили указатель на какой-то там объект succ.
но нам нужен не он, а его мембер по имени prev. ну значит до него можно
достучатся так: norse_gods->succ->prev;
более длинно это можно написать так:
C++
1
2
Link* tmp = norse_gods->succ;
tmp->prev = norse_gods;
Sentipar
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 26
06.03.2014, 00:09  [ТС]     Указатели и двусвязные списки #3
Т.е. в данном случае, этот мембер(nord_gods->succ->prev) будет ссылатся на nord_gods? (на объект с именем Odin)?
C++
1
nord_gods->succ->prev = nord_gods;
DU
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
06.03.2014, 00:14     Указатели и двусвязные списки #4
после 9 строки вашего кода - да. будет ссылаться на объект с именем Odin
Sentipar
0 / 0 / 0
Регистрация: 05.03.2014
Сообщений: 26
06.03.2014, 00:26  [ТС]     Указатели и двусвязные списки #5
Благодарю.
Yandex
Объявления
06.03.2014, 00:26     Указатели и двусвязные списки
Ответ Создать тему
Опции темы

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