![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Поиск юзал ниче конкретного.
Мне, значит, требуется оформить структуру данных ввиде динамического списка. Я не догоняю чем будет отличаться обычная структура struct от динамического списка(в смысле по оформлению), в этом вся проблема. Компилятор borland c 3.1 --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Сначала объясни, что ты понимаешь под динамическим списком. Есть динамический массив - массив, количество элементов которого неизвестно на этапе компиляции (в общем случае) и может меняться во время выполнения программы. Преимущества - константное время доступа к любому элементу. Есть односвязный список - это список, доступ к каждому элементу которого осуществляется перебором всех предыдущих элементов. Преимущества - постоянная скорость добавления/удаления элементов. Есть двусвязный список - отличается от односвязного тем, что перебор можно осуществлять не только сначала, но и с конца списка (каждый элемент содержит указатель не предыдущий и последующий). Так который тебе нужен? |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
односвязный, явно односвязный
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
тогда тебе нужно написать класс контейнер элемента (в данном случае типа int):
Почитай описание slist в STL - оно тебе немного подскажет куда двигаться. |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
а тупо через указатели никак не замутить??
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Что значит "тупо через указатели"? Тебе нужно хранить сами данные и ссылку на следующий объект - тупее не придумаешь! |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Где здесь хранятся данные и где здесь следующий объект?? Это сообщение отредактировал(а) Notreg - 25.11.2007, 12:21 --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
У тебя с английским очень плохо?
m_data - это сами данные (в частности для примера типа int) m_next - это указатель на следующий элемент контейнера. |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Напиши терь как мне забить этот список мож тогда пойму
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Из того, что я уже написал вполне можно догадаться о способе заполнения списка - достаточно знать азы C++ (даже азов Си достаточно).
Судя по всему, ты хочешь получить готовое решение. Это тогда в раздел Центр помощи |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Зачем мне готовое достаточно просто логику понять, я не могу догнать где начинается динамический список, и как им управлять. В той информации которую ты дал есть все если знаешь. Мож знаешь где написано то что ты говоришь
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
Я тебе дал описание контейнера - "обертки" над данными (элемент списка, если хочешь). Список - это набор таких взаимосвязанных контейнеров. Соответственно, список будет выглядеть в виде одного единственного указателя (если у тебя язык С++, то еще можно методы присобачить) на первый контейнер, если он есть, или на 0 в противном случае. Когда тебе надо добавить элемент в список, ты выделяешь память под еще один контейнер, присваиваешь его полю m_next значение 0, а полю m_next последнего элемента списка (если он есть, конечно, иначе указателю на первый элемент списка) указатель на только что созданный контейнер...
|
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
--------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Notreg, тебе уже его выдали несколько постов назад.
|
|||
|
||||
| intel |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 5.7.2007 Репутация: нет Всего: нет |
...всё элементарно |
|||
|
||||
| Notreg |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 124 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Можно ли поменять в таком варианте первый и последний элемент, используя поля связи?? Если можно черкани пару строчек кода!! --------------------
Надежна лишь смерть, жизнь - нет. |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 63 Всего: 196 |
А в чем проблема? Находишь первый и предпоследний элементы списка. После этого у последнего элемента (предпоследний->next) в поле next подставляет значение поля next первого, в поле next предпоследнего подставляешь указатель на первый элемент, поле next бывшего уже первого обнуляешь.
|
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |