Подскажите с Delphi
Создана: 27 Мая 2010 Чтв 23:25:57.
Раздел: "Компьютерный раздел"
Сообщений в теме: 2, просмотров: 687
-
Привет, сразу извините если написал не в том разделе!
Есть задание по делфи Динамические структуры данных: Организация связных списков, есть пример и нужно объяснить одну процедуру, помогите пожалуйста.
Сама программка [внешняя ссылка]
Код: procedure TForm1.Button3Click(Sender: TObject);
begin
label2.Caption:='';
q:=L;
while q<>nil do
begin
label2.Caption:=label2.Caption+IntToStr(q^.val)+' ';
q:=q^.next;
end;
end;
Код: unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
Edit1: TEdit;
Label1: TLabel;
Button2: TButton;
Button3: TButton;
Label2: TLabel;
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
link = ^elem;
elem = record
val : integer;
next : link
end;
var
Form1: TForm1;
L, p, q : link;
f:TextFile;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var s:string;
begin
assignfile(f, 'file1.txt');
reset(f);
new(L); {Указатель на первый элемент очереди}
Readln(f,s);
L^.val:=StrToInt(s);
p:=L;
while not eof(f) do
begin
new(q);
readln(f,s);
q^.val:=StrToInt(s);
p^.next:=q;
p:=q;
end;
p^.next:=nil; {Обозначение последнего элемента очереди}
closefile(f);
showmessage('Очередь создана');
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
label2.Caption:='';
q:=L;
while q<>nil do
begin
label2.Caption:=label2.Caption+IntToStr(q^.val)+' ';
q:=q^.next;
end;
end;
end. -
А чего тут собственно объяснять?
Функция выводит в текст кнопки все элементы списка через пробел...
L - список (указатель на его первый элемент)
q:=L; - взяли первый элемент.
q:=q^.next; - переход к следующему элементу списка.
q^.val - значение текущего элемента.
while q<>nil do - контроль конца списка, у последнего елемента не будет ссылки на следующий, те у него q^.next==nil...