Как осуществить поиск в 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;