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

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.

> Бинарный поиск в 2-связном списке
сообщение
Сообщение #1


Гость






Как осуществить поиск в 2-связном списке без нумерации его элементов.
Список уже отсортирован.

С номерами у меня так получилось:

Zveno=^r;
r= record
s:st;
N:integer;
next,pred:zveno;
end;


{-----Процедура поиска элемента списка по его номеру-----}
procedure spi(k:integer; var spis:zveno);
begin
if k<spis^.N then
while (k<spis^.N)do
begin
spis:=spis^.pred;
if spis^.pred=nil then exit;
end
else
if k>spis^.N then
while (k>spis^.N)do
begin
if (spis^.next=nil) then exit;
spis:=spis^.next;
end
end;


{-----Поиск в списке-----}
procedure TForm1.P3Click(Sender: TObject);
Var i,i1,m:Integer; b:Boolean;
x:st;
sp:zveno;
Begin
x:=edit1.text; label7.Caption:='0';
sp:=spisok^.next;
i:=1; i1:=j; {На первом шаге рассматривается весь массив.}
b:=False; {Признак того, что Х не найден.}
While (i<=i1) And Not b Do
Begin
m:=(i+i1) Div 2; {Среднее}
spi(m,sp); caption:=caption+inttostr(sp^.N)+',';
If sp^.s=X Then b:=True {Элемент найден, поиск прекращается.}
Else If sp^.s <X Then i:=m+1 {Исключаем из рассмотрения левую часть списка }
Else i1:=m-1 {Правую часть.}
End;

if b then label7.Caption:=inttostr(m);
caption:=caption+'|_|';
End;
 К началу страницы 
+ Ответить 

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


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

 





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