Дополнен 10 лет назад
Этот код являеться решением?
type
List=^TList; {Указатель на элемент типа TList}
TList=record {А это наименование нашего типа "запись" обычно динамические структуры описываются через запись}
data:integer; {данные, хранимые в элементе}
next:List; {указатель на следующий элемент}
end;
procedure ReadFile(var f:text;var stek1:List);{Процедура чтения файла в стек}
var
tmp:List;
x:integer;
begin
while not eof(f) do
begin
new(tmp); {выделяем в памяти место для нового элемента}
tmp^.next:=stek1; {указатель на следующий элемент "направляем" на вершину стека}
read(f,x);
tmp^.data:=x; {добавляем к элементу данные}
stek1:=tmp; {вершина стека изменилась, надо перенести и указатели на неё}
end;
end;
procedure WriteFile(var f:text;stek1:List); {Процедура вывода стека в файл}
var x:real;
begin
while stek1<>nil do {пока указатель stek1 не станет указывать в пустоту}
begin {а это произойдёт как только он перейдёт по ссылке последнего элемента}
x:=stek1^.data;
Writeln(f,x); {выводить данне}
stek1:=stek1^.next {и переносить указатель вглубь по стеку}
end;
end;
Procedure FreeStek(stek1:List); {Процедура освобождения памяти занятой стеком}
var
tmp:List;
begin
while stek1<>nil do {пока stek1 не станет указывать в "пустоту" делать}
begin
tmp:=stek1; {указатель tmp направим на вершину стека}
stek1:=stek1^.next; {вершину стека перенесём на следующий за данной вершиной элемент}
dispose(tmp); {освободим память занятую под старую вершину}
end;
end;
var f,g:text; L:List;
begin
assign(f,'C:\Documents and Settings\Admin\Рабочий стол\i.txt');
reset(f);
assign(g,'C:\Documents and Settings\Admin\Рабочий стол\u.txt');
rewrite(g);
ReadFile(f,L);
WriteFile(g,L);
FreeStek(L);
close(f);
close(g);
end.