Вторник, 26 Ноября 2024, 06:53

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Список на основе массива
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, я бы помог, но ты + в репу не даешь. Обидно! cry
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 ()
Спасибо, разобрался. Нужно использовать динамический массив

Необязательно. Узлы списка можно располагать и в статическом массиве
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг