30 Сидоров
20 Петров
10 Иванов
Как и следовало ожидать, порядок элементов в списке оказался обратным порядку вставки в него. Этим можно воспользоваться для построения стека, что мы и сделаем в свое время.
Углубившись в списки, мы чуть не забыли о нашем пользователе – полицейском. А ведь ему придется искать в базе данных информацию об угнанных автомобилях. Дополнив предыдущую программу функцией поиска, получим представленную ниже программу «P_54_2». Для экономии бумаги я не показал здесь процедуры вставки и распечатки списка.
{ P_54_2 – Размещение и поиск данных в несортированном списке }
type PRec = ^TRec; { Тип указатель на запись }
TRec = record { Тип записи для базы данных }
mNumber : integer; { Номер авто }
mFam : string[31]; { Фамилия владельца }
mNext : PRec; { Указатель на следующую запись }
end;
var List : PRec; { Указатель на начало списка (голова) }
procedure AddToList(aNumber: integer; const aFam : string);
{--- взять из P_54_1 ---}
end;
procedure PrintList;
{--- взять из P_54_1 ---}
end;
{ Поиск в несортированном списке }
function Find(aNumber: integer): PRec;
var p : PRec;
begin
p:= List; { Поиск начинаем с головы списка }
{ Продвигаемся по списку, пока не найдем нужный номер
или не "упремся" в конец списка }
while Assigned(p) and (P^.mNumber <> aNumber) do p:= p^.mNext;
Find:= p; { результат поиска }
end;
var i, N : integer; P : PRec;
begin {--- Главная программа ---}
List:= nil;
{ Заполним список случайными значениями номеров }
for i:=1 to 20 do AddToList(100+Random(100), 'Деточкин');
PrintList; { Распечатка списка }
repeat { Цикл попыток поиска в списке }
Write('Укажите номер авто = '); Readln(N);