![]() |
1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code].
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!
![]() |
osa |
![]()
Сообщение
#1
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
Здравствуйте , мне необходимо
1) создать массив 2) установить его указатели на массив и на след элемент (создать список указателей на массив и на следуюющий элемент еще в сегменте данных) 3) и поменять эти указатели П.С. эсли 1) и 2) я представляю как сделать то 2) да еще и в сегменте данных я не представляю . |
![]() ![]() |
volvo |
![]()
Сообщение
#2
|
Гость ![]() |
Ты толком объяснить можешь? У тебя есть список... Само собой, что каждый элемент списка содержит адрес следующего элемента списка, но ведь кроме этого он тоже что-то содержит !!! Так вот я и хочу узнать, ЧТО ИМЕННО должен содержать каждый элемент списка??? Допустим, первый - содержит адрес массива, а второй? А третий? Четвертый? ...
Вот так задается список: Код type tlist = record data: ... { <--- вот тут что хранится будет ???} next: ^tlist; { тут-ясно, что след. элемент списка } end; Неужели тебе надо просто рядом с массивом оформить еще и список, который будет содержать адреса соответствующих элементов массива? Это же как минимум 4-х кратный проигрыш в размере !!! |
osa |
![]()
Сообщение
#3
|
Группа: Пользователи Сообщений: 7 Пол: Мужской Репутация: ![]() ![]() ![]() |
!Смотри 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. Теперь твоя очередь... Каким образом ЭТО экономит память по сравнению с простым использованием массива? |
![]() ![]() |
![]() |
Текстовая версия | 20.07.2025 6:43 |