1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
| osa |
Сообщение
#1
|
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
Здравствуйте , мне необходимо
1) создать массив 2) установить его указатели на массив и на след элемент (создать список указателей на массив и на следуюющий элемент еще в сегменте данных) 3) и поменять эти указатели П.С. эсли 1) и 2) я представляю как сделать то 2) да еще и в сегменте данных я не представляю . |
![]() ![]() |
| volvo |
Сообщение
#2
|
|
Гость |
Ты толком объяснить можешь? У тебя есть список... Само собой, что каждый элемент списка содержит адрес следующего элемента списка, но ведь кроме этого он тоже что-то содержит !!! Так вот я и хочу узнать, ЧТО ИМЕННО должен содержать каждый элемент списка??? Допустим, первый - содержит адрес массива, а второй? А третий? Четвертый? ...
Вот так задается список: Код type tlist = record data: ... { <--- вот тут что хранится будет ???} next: ^tlist; { тут-ясно, что след. элемент списка } end; Неужели тебе надо просто рядом с массивом оформить еще и список, который будет содержать адреса соответствующих элементов массива? Это же как минимум 4-х кратный проигрыш в размере !!! |
| osa |
Сообщение
#3
|
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
!Смотри 0 элем списка указывает указывает на 1 ; 1 на 2ой и тд вплоть до последнего ! ясно что в списке будет даные даные указывайт на елемент массива , т е в 1 елементе списка храниться адресс 1 ячейки массива ... и т.д. !
впроть до последнего там понятно nil. ! Как задаеться переменные списка я знаю мне бы надо чтобы в данных он уже был полностью создан ! тоесть у меня массив из 8 елементов и был бы список из 10 эелементов BegL -> 1 -> 2 -> 3 -> 4 -> ... 8-> EndL @A[1] @A[2] @A[3] @A[4] @A[8] Цитата(volvo @ 10.04.05 12:46) Неужели тебе надо просто рядом с массивом оформить еще и список, который будет содержать адреса соответствующих элементов массива? Это же как минимум 4-х кратный проигрыш в размере !!! А на память мне все равно! вернее этим способом я освобождаю как минимум в 2 раза память ! чем я бы использовал другой метод ! |
| volvo |
Сообщение
#4
|
|
Гость |
Цитата(osa @ 10.04.05 13:03) вернее этим способом я освобождаю как минимумв 2 раза память ! чем я бы использовал другой метод ! А вот теперь я тебе покажу, КАК это делается, а ты мне приведешь пример того, как при этом ИЗВРАТЕ ты в 2 раза минимум освобождаешь память... Не забудь, что в DS хранится И массив И список, что уже забирает лишнюю память. Кстати, это почему у тебя при массиве длинной 8 элементов длина списка = 10? Это тоже часть твоей суперстратегии? Код const n = 10; arr: array[1 .. n] of integer = (1, 2, 3, 4, 5, 6, 7, 8, 9, 10); type pint = ^integer; plist_rec = ^list_rec; list_rec = record data: pint; next: plist_rec; end; var list: array[1 .. n] of list_rec; p, head: plist_rec; i: integer; begin head := @list[1]; for i := 1 to n do begin list[i].data := @arr[i]; if i <> n then list[i].next := @list[succ(i)] else list[i].next := nil; end; p := head; while p <> nil do begin writeln(p^.data^); p := p^.next end; end. Теперь твоя очередь... Каким образом ЭТО экономит память по сравнению с простым использованием массива? |
| osa |
Сообщение
#5
|
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: 0 |
Я может не так обьясняю ) Дело в том что например как создать динамический массив я знаю !
Но а как его создать статически ??? Вот этим способом ты взял и по ходу выполнения програмы записал в ячейки данных списка адресса массивов! А мне надо это сделать еще до выполнения программы ! т е до начала БЕГИНА в сегменте данных ! |
osa Работа с указателями на массив 10.04.2005 15:50
volvo osa, поточнее можно? Что значит ? На следующий за … 10.04.2005 16:00
osa
Опечатался 1 и 3 представляю .
А затем что это к… 10.04.2005 16:14
volvo Я так и не понял, какой выигрыш дает использование… 10.04.2005 16:22
osa смотри нам нужно создать список не динамически, а … 10.04.2005 16:34
osa А начет памяти ! дело в том что мне надо напис… 10.04.2005 17:20
volvo Что-то я совсем запутался. Что значит "Статич… 10.04.2005 17:46
osa Понятно ! ты знаешь если честно я тоже думал ч… 10.04.2005 20:20![]() ![]() |
|
Текстовая версия | 7.11.2025 14:54 |