|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
20.03.2013, 22:35 | #11 |
Пользователь
Регистрация: 30.12.2010
Сообщений: 91
|
PHP код:
head-указатель на начало temp-временная переменная
Я тебе помог, добавь отзыв)))))
Статьи по программированию |
21.03.2013, 06:48 | #12 |
Форумчанин
Регистрация: 07.05.2011
Сообщений: 169
|
MoBLer, огромное вам спасибо!!))))
А вы можете прокомментировать программу? Не совсем понятны некоторые места....))) Ладно, вот у меня ещё вопрос - 1 структура есть, а если у меня их 10 должно быть - копипастим и радуемся жизни или можно как-то упростить себе жизнь? *был такой же вопрос в формах - много текстбоксов, его решили путём textBox(c), как-то так, где с - номер текстбокса. Может быть, тут тоже есть что-нибудь похожее?? Ну, а если нет, то не страшно, накопипастю)) |
21.03.2013, 07:15 | #13 |
Форумчанин
Регистрация: 07.05.2011
Сообщений: 169
|
Хотя нет, вы знаете, я чуток разобралась и поняла что к чему. Методом проб и ошибок, так сказать
И вот в ходе этих проб и ошибок возникли следующие вопросы: 1 - как использовать в int-массиве указатели\ссылки\адреса на списки? *допустим, на голову? 2 - как устроить поиск элемента в списке? При условии. что в списке будут уже не все 9 элементов, а 5. А в другом будет 2. А в третьем 8. 3 - удаление? 4 - Допусти, у меня есть списки: li1,li2,li3, l4 и li5. Как мне осуществить их перебор, чтобы не обращаться к каждому в ручную, а в какой-то общий цикл. Например: Код:
|
21.03.2013, 11:17 | #14 | |||||
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Цитата:
Цитата:
Цитата:
Цитата:
Код:
Цитата:
|
|||||
21.03.2013, 12:09 | #15 |
Форумчанин
Регистрация: 07.05.2011
Сообщений: 169
|
RrrFer
1 - ну вот допустим. Массив из двух элементов. В первой ячейке 1, а во второй как сделать хранение списка? Суть "вопроса" такая, что можно ли хранить и цифру/число адрес/указатель/ссылку на список в одном массиве? 4 - т.е., я в цикле пишу тот код, а потом пишу действия, которые мне нужны, а чтобы переходить от одной головы к другой - использовать обычный фор, первый 0, и писать общий алгоритм. Мыслю верно? 2 - аааа, цикл работает, пока next!=0 Указатель Вечером буду думать над вопросом, попробую реализовать и выложить код))) спасибо большое, что помогаете)) |
21.03.2013, 12:22 | #16 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
1) Можно, но это какое-то извращение
Можно создать union со всеми вариантами и сделать массив union'ов (не утверждаю 100%, но с большой долей вероятности можно).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
21.03.2013, 12:57 | #17 | |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Цитата:
И начнём с основ. Все объекты, которые Вы описываете в коде, "создаются" в каком-то месте оперативной памяти. Код:
Код:
Что не совсем очевидно, функции - тоже переменные: Код:
"Обычные" же переменные можно определять как глобально, так и внутри некоторой функции. Но в любом случае, переменная - это место в памяти, причём гарантируется, что разные переменные находятся в разных местах. Интересное следствие: если создать тип нулевого размера (это можно сделать), то массив из 1000 объектов такого типа обычно занимает... 1000 байт. Ведь иначе разные элементы массива имели бы один адрес. Указатель - базовый тип данных. Могут существовать указатели на любую переменную: на int, на char, на массив из double и так далее. Поскольку указатели - тоже переменные, то существуют также указатели на указатели. Но если переменные могут занимать больше или меньше места, то указатели ("обычные" указатели, скажем так) всегда одного размера; на современных архитектурах это 4 или 8 байт. Поэтому в C++ есть специальный тип "просто указателя": void*. Обычно он используется в тех случаях, когда нам важен только кусок памяти, но не то, как он устроен (к примеру, функция memcpy копирует кусок памяти в другое место - и принимает аргументы типа void*). Два важных момента. Первый: поскольку локальные нестатические переменные функции перестают существовать при выходе из неё, то, если мы нечаянно вернули вызвавшему коду указатель на такую переменную, он в действительности указывает "в никуда", обращение по нему есть ошибка. Второй: при вызове функции все аргументы копируются в локальные переменные функции. Никакие изменения копии не изменят оригинала, и это очень частые грабли начинающих. Что же делать? Использовать указатели и внимательно следить за тем, как долго живут объекты, на которые они указывают. Код:
Код:
|
|
21.03.2013, 12:58 | #18 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
Ключевое слово new служит для создания "долгоживущего" куска памяти: в отличие от локальных нестатических переменных, такой кусок памяти можно создать в функции и вернуть "наружу". new Type создаёт (выделяет) в оперативной памяти кусок достаточно большой, чтобы туда влез объект типа Type и возвращает указатель на этот кусок, типа Type*.
Код:
Код:
Структуры - простейший вариант пользовательского типа. Структура C (в C++ она немного "проапгрейдилась", но мы не будем обращать на это внимания) - это просто пачка переменных разных типов: Код:
Код:
Код:
|
21.03.2013, 12:58 | #19 |
Старожил
Регистрация: 25.10.2011
Сообщений: 3,178
|
А теперь собираем всё вместе:
Код:
Код:
|
21.03.2013, 13:11 | #20 | |
Санитар
Старожил
Регистрация: 04.10.2008
Сообщений: 2,577
|
Abstraction, решил учебник написать? - я давно заметил )
Цитата:
Извратица можно всегда (как это сделать предлагают выше, но при этом у вас в массиве все равно будут элементы одного типа (типа юниона или что-то там), но не нужно. |
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Создать односвязный список и вывести его на экран. Из этого списка создать новый список по указанному ниже правилу и новый список | San111 | Паскаль, Turbo Pascal, PascalABC.NET | 1 | 15.05.2012 22:08 |
Односвязный список | ZavriK | Помощь студентам | 2 | 02.05.2012 22:27 |
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен | lineico | Помощь студентам | 2 | 09.05.2011 17:45 |
Односвязный список | masha17 | Общие вопросы C/C++ | 1 | 09.12.2009 12:20 |
C++. Односвязный список. Уничтожить список | Olya90 | Помощь студентам | 2 | 10.06.2009 18:52 |