Форум: "Основная";
Текущий архив: 2003.06.09;
Скачать: [xml.tar.bz2];
ВнизОх, уж эти линейные списки.. Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.009 c