IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Работа с указателями на массив, указатели на массив и их перенос
сообщение
Сообщение #1





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Здравствуйте , мне необходимо
1) создать массив
2) установить его указатели на массив и на след элемент (создать список указателей на массив и на следуюющий элемент еще в сегменте данных)
3) и поменять эти указатели

П.С.
эсли 1) и 2) я представляю как сделать то 2) да еще и в сегменте данных я не представляю .
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ты толком объяснить можешь? У тебя есть список... Само собой, что каждый элемент списка содержит адрес следующего элемента списка, но ведь кроме этого он тоже что-то содержит !!! Так вот я и хочу узнать, ЧТО ИМЕННО должен содержать каждый элемент списка??? Допустим, первый - содержит адрес массива, а второй? А третий? Четвертый? ...

Вот так задается список:
Код

type tlist = record
 data: ... { <--- вот тут что хранится будет ???}
 next: ^tlist; { тут-ясно, что след. элемент списка }
end;

Неужели тебе надо просто рядом с массивом оформить еще и список, который будет содержать адреса соответствующих элементов массива?

Это же как минимум 4-х кратный проигрыш в размере !!!
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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 раза память ! чем я бы использовал другой метод !
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
сообщение
Сообщение #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.

Теперь твоя очередь... Каким образом ЭТО экономит память по сравнению с простым использованием массива?
 К началу страницы 
+ Ответить 
сообщение
Сообщение #5





Группа: Пользователи
Сообщений: 7
Пол: Мужской

Репутация: -  0  +


Я может не так обьясняю ) Дело в том что например как создать динамический массив я знаю !
Но а как его создать статически ???
Вот этим способом ты взял и по ходу выполнения програмы записал в ячейки данных списка адресса массивов! А мне надо это сделать еще до выполнения программы ! т е до начала БЕГИНА в сегменте данных !
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 7.11.2025 14:54
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name