Список на основе массива
|
|
Ramilyanamana | Дата: Среда, 14 Октября 2015, 11:46 | Сообщение # 1 |
Биззи Джей Ужасный
Сейчас нет на сайте
| На лабораторной дали задание реализовать программу, использую список на основе массива. Объясните пожалуйста, что это за список. Это какой-то массив структур. Или что? До сих пор понять не могу. В интернете ничего толкового не нашел. Заранее благодарю
|
|
| |
linux | Дата: Среда, 14 Октября 2015, 12:06 | Сообщение # 2 |
частый гость
Сейчас нет на сайте
| Я так понимаю - это список в котором ссылки на следующие элементы - это индексы элементов в массиве. И весь список лежит в одном массиве.
|
|
| |
Ramilyanamana | Дата: Среда, 14 Октября 2015, 12:10 | Сообщение # 3 |
Биззи Джей Ужасный
Сейчас нет на сайте
| linux, не совсем вас понял. можно подробней?
|
|
| |
Gudleifr | Дата: Среда, 14 Октября 2015, 15:42 | Сообщение # 4 |
почти ветеран
Сейчас нет на сайте
| Ramilyanamana, ну, если Вы хотите стать крутым программистом, запомните: нет структур данных кроме массивов! Все эти STL-разносолы - для умственно недоразвитых пользователей. Какую бы фиговину вы не собрали из данных, на самом дне, все равно, будут массивы...
Далее Вы можете продолжать читать мой ответ или сразу перейти к 1-му тому "Искусства программирования" Кнута - там списки разжеваны подробно.
Что такое список? Это набор элементов, каждый из которых, кроме собственно данных содержит ссылку на следующий. "Мышка - за Кошку, Кошка - за Жучку, Жучка - за Внучку..."
Как это засунуть в массив? Если данные целочисленные (или массив состоит из структур), то поле "следующий" (со значением "номер следующего") вполне может быть приписан к данным.
Иначе, например, как у нас выше, где массив строковый - "Внучка", "Жучка".., нужен отдельный массив с номерами.
Далее должна следовать (у Кнута так и есть) лабуда про вставку и удаление элементов, циклические и двусвязные списки и т.п. и т.д.
Наконец, зачем в это влезать, если есть STL? Повторю, STL - для дебилов. Работа со сложными типами данных окупается только тогда, когда эти данные сложны и велики в объеме (поэтому ООП - тоже для дебилов), но когда это так, "стандартные" структуры нас не устроят и надо их писать под себя с нуля.
Просто об этом: Керниган Б., Пайк Р. Практика программирования. Сложно: Ахо А., Хопкрофт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов.
Добавлено (14 октября 2015, 15:42) --------------------------------------------- P.S. Вообще же, если есть проблема со структурами данных, то ее сначала надо локализовать. В чем проблема: 1. Как использовать списки в программе? 2. Как работают//устроены операции над списками? 3. Как работают/устроены те ("атомарные") операции над списками, которые зависят от представления списка? 4. Непонятно, как разделить на (1)-(3)?
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
Сообщение отредактировал Gudleifr - Среда, 14 Октября 2015, 15:44 |
|
| |
falcoware | Дата: Среда, 14 Октября 2015, 17:11 | Сообщение # 5 |
старожил
Сейчас нет на сайте
| Ramilyanamana, я бы помог, но ты + в репу не даешь. Обидно!
|
|
| |
linux | Дата: Среда, 14 Октября 2015, 17:13 | Сообщение # 6 |
частый гость
Сейчас нет на сайте
| Ramilyanamana, берёшь классический список, но вместо выделения памяти под каждый элемент раскладываешь их по массиву. Вместо указателя, хранишь индекс. Подробнее, только готовый код написать, но мне оно без надобности...
|
|
| |
Ramilyanamana | Дата: Четверг, 15 Октября 2015, 10:39 | Сообщение # 7 |
Биззи Джей Ужасный
Сейчас нет на сайте
| Спасибо, разобрался. Нужно использовать динамический массив
|
|
| |
Gudleifr | Дата: Четверг, 15 Октября 2015, 10:46 | Сообщение # 8 |
почти ветеран
Сейчас нет на сайте
| Цитата Ramilyanamana ( ) Нужно использовать динамический массив. Скорее всего, нет. Если только препод не указал на это явно.
Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.
|
|
| |
Saitei | Дата: Четверг, 15 Октября 2015, 23:21 | Сообщение # 9 |
старожил
Сейчас нет на сайте
| Цитата Ramilyanamana ( ) Спасибо, разобрался. Нужно использовать динамический массив Необязательно. Узлы списка можно располагать и в статическом массиве
|
|
| |