Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.06.09;
Скачать: CL | DM;

Вниз

Ох, уж эти линейные списки..   Найти похожие ветки 

 
wera ©   (2003-05-28 10:55) [0]

Народ подскажите, как осуществить поиск в связном однонаправленном списке.


 
Palladin ©   (2003-05-28 10:59) [1]

как как... в цикле ессно...


 
Skier ©   (2003-05-28 11:00) [2]

>wera © (28.05.03 10:55)
Самое главное - это правильно организовать такой список.
Дальше будет легче...:)


 
wera ©   (2003-05-28 11:00) [3]

new(teck);
teck:=head;
a:=strtofloat(edit1.Text);
while (teck<>nil) and (a<>teck^.info) do
begin
pEnd:=teck;
teck:=teck^.link;
end;
if (teck=nil) and (a<>teck^.info) then
Label1.Caption:="


 
Skier ©   (2003-05-28 11:03) [4]

>wera © (28.05.03 11:00)
Что значит "не работает" ? По-конкретней... Как заполняешь этот
список ? Энто тоже важно...


 
Vlad Oshin ©   (2003-05-28 11:03) [5]

по цепочке, от первого елемента по ссылке на следующий и до nil последнего


 
wera ©   (2003-05-28 11:05) [6]

type
Zapis= ^Key;
Key = record
info:extended;
link: Zapis;
end;

var
Form1: TForm1;
pEnd,teck,head: Zapis;
a:extended;
procedure TForm1.FormCreate(Sender: TObject);
begin
new(head);
new(teck);
new(pEnd);
head^.link:=teck;
teck^.link:=nil;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
new(teck);
teck:=head;
a:=strtofloat(edit1.Text);
while (teck<>nil) and (a<>teck^.info) do
begin
pEnd:=teck;
teck:=teck^.link;
end;
if (teck=nil) and (a<>teck^.info) then
Label1.Caption:="


 
Palladin ©   (2003-05-28 11:06) [7]

while teck<>nil do
begin
if teck.info=a then break;
teck=teck.link;
end;


 
wera ©   (2003-05-28 11:07) [8]

:))! спасибочки.


 
Sandman25 ©   (2003-05-28 11:08) [9]

if (teck=nil) OR (a<>teck^.info) then

new(tek) не надо.


 
wera ©   (2003-05-28 11:37) [10]

procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
teck:=head;
while (teck<>nil) and (a<>teck^.info) do
begin
if teck.info=a then
Label1.Caption:="


 
Palladin ©   (2003-05-28 11:39) [11]

см Sandman25 © (28.05.03 11:08)


 
Skier ©   (2003-05-28 11:39) [12]

>wera © (28.05.03 11:37)
см. Sandman25 © (28.05.03 11:08)


 
Palladin ©   (2003-05-28 11:40) [13]

procedure TForm1.Button2Click(Sender: TObject);
begin
a:=strtofloat(edit1.Text);
teck:=head;
while teck<>nil do
begin
if teck.info=a then break;
teck:=teck^.link;
end;
if teck<>nil then Label1.Caption:="


 
Palladin ©   (2003-05-28 11:41) [14]

:)))


 
Sandman25 ©   (2003-05-28 11:42) [15]

if teck.info=a then

begin

Label1.Caption:="


 
wera ©   (2003-05-28 11:47) [16]

супер.спасибо, все заработало( правда всегда выдает запись найдена, но это наверное уже в другом месте ошибка)


 
DAC ©   (2003-05-28 12:09) [17]

Выражения типа:
if (teck<>nil) OR (a<>teck^.info) then
не корретны в Object Pascal.
Object Pascal не гарантирует, что в начале будет вычислено teck<>nil , а потом уже a<>teck^.info. В противном случае, может возникнуть ошибка. Это зависит от версии компилятора. Поэтому лучше писать:
if (teck<>nil) then if (a<>teck^.info) then


 
Skier ©   (2003-05-28 12:11) [18]

>DAC © (28.05.03 12:09)

> Это зависит от версии компилятора.

Это зависит от {$B+/-}


 
DAC ©   (2003-05-28 12:54) [19]


> Skier © (28.05.03 12:11)
Это зависит от {$B+/-}

Согласитесь, это опции компилятора, а не семантика языка.


 
Skier ©   (2003-05-28 12:59) [20]

>DAC © (28.05.03 12:54)

> а не семантика языка.

1)Ну а это-то здесь причём ?!
2) IMHO, ясно написано в вопросе D6.


 
Palladin ©   (2003-05-28 13:03) [21]

действительно, причем тут семантика?
с точки зрения синтаксиса и семантики выражение
if (teck<>nil) OR (a<>teck^.info) then
абсолютно безошибочно



Страницы: 1 вся ветка

Текущий архив: 2003.06.09;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.019 c
3-26335
gonta
2003-05-20 10:58
2003.06.09
Обработка SQL запроса в потоке


14-26667
Шейкер
2003-05-23 13:52
2003.06.09
Шейкер-соритровка


7-26797
Islander
2003-03-31 09:04
2003.06.09
Выключить компьютер в XP


3-26392
AlexAvz
2003-05-21 15:22
2003.06.09
БД PARADOX


11-26415
Roby
2002-09-20 00:38
2003.06.09
KOL RichEdit