ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |

27.12.2009, 23:11
|
|
Постоянный
Регистрация: 04.04.2008
Сообщений: 527
Провел на форуме: 1494768
Репутация:
272
|
|
Очереди в Паскале
И еще одна...
Очередь задана структурой
type Person=......
Key:.....//ключ
Next:.....//адреса следующего элемента
............
var First, Pn: Person;
Очередь существует, количество элементов >=2.
Конечный элемент очереди имеет P^.next=nil,адреса(хвоста) входу очереди - First. Навести фрагмент программы, с помощью которого из очереди будет вытянуто дежурный элемент(последний при организации) и его адрес будет присвоен переменной Pn, выполнить необходимую переадресацию после исключения элемента.
Использовать исключительно описаны переменные.
|
|
|

28.12.2009, 04:42
|
|
Новичок
Регистрация: 04.06.2009
Сообщений: 3
Провел на форуме: 73724
Репутация:
6
|
|
Создаешь запись type Person = record .где внутри есть указатель на следующий элемент этого-же типа( объявленный выше). Перед этим создаешь тип - указатель на эту запись(он как раз и описан внутри записи).
Код:
type
Pperson = ^Person; // создаем указатель на тип Person;
Person= record
Key: integer //ключ?
Next: Pperson //адреса следующего элемента
end; // закрываем запись.
var
Temp, First, Pn: PPerson;
N,i:byte;
Begin
First := Nil;
writeln('N?');
readln(N);
for i :=1 to N do
begin
Getmem(Temp, Sizeof(Person)); //выделили память.
If First = nil then First:=Temp
else
Pn^.next :=Temp;
Pn :=Temp;
end;
temp^.next=Nill; //последний элемент конечный
End.
Как-то так, писал впопыпах и ночью. Это мы создали очередь, удаление из конца доделай сам.
Последний раз редактировалось Retro; 28.12.2009 в 12:55..
|
|
|

28.12.2009, 09:18
|
|
Познающий
Регистрация: 28.09.2008
Сообщений: 65
Провел на форуме: 152084
Репутация:
8
|
|
Сообщение от Retro
Создаешь запись type Person = record .где внутри есть указатель на следующий элемент этого-же типа( объявленный выше). Перед этим создаешь тип - указатель на эту запись(он как раз и описан внутри записи).
Код:
type
Pperson = ^Person; // создаем указатель на тип Person;
Person= record
Key: integer //ключ?
Next: Pperson //адреса следующего элемента
end; // закрываем запись.
var
Temp, First, Second, Pn: PPerson;
N,i:byte;
Begin
First := Nil;
writeln('N?');
readln(N);
for i :=1 to N do
begin
Getmem(Temp, Sizeof(Person)); //выделили память.
If First = nil then First:=Temp
else
second^.next :=temp;
Second :=temp;
end;
temp^.next=Nill;
End.
Как-то так, писал впопыпах и ночью.
по моему ещё ячейки памяти не выделенны под first,second,temp.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|