Skip to content

Instantly share code, notes, and snippets.

@morganwilde
Last active August 29, 2015 13:57
Show Gist options
  • Save morganwilde/9570452 to your computer and use it in GitHub Desktop.
Save morganwilde/9570452 to your computer and use it in GitHub Desktop.
program Antrasis_lab_2_uzduotis;
//Gretos Gedminaites FDM2
//Parasykite funkcija, kuri teksto eiluciu saraso( funkcijos parametras ) priekyje prideda tokia pat eilute kaip paskutine eilute. Naujai
//suformuota sarasa funkcija grazina kaip rezultata.
type PSar = ^TSar;
TSar = record
duomuo : string;
kitas : PSar;
end;
procedure KurkTuscia( var prad : PSar);
begin
prad := nil;
end;
function KurkElementa( duomuo : string ) : PSar;
var naujas : PSar;
begin
New( naujas );
naujas^.duomuo := duomuo;
naujas^.kitas := nil;
KurkElementa := naujas;
end;
procedure PridekPo( elementas : PSar; var po_ko : PSar);
begin
po_ko^.kitas := elementas;
end;
procedure PridekPirma(elementas : PSar; var prad : PSar);
begin
prad := elementas;
end;
function SkaitykFaila( f_vardas : string) : PSar;
var f : text;
s : string;
prad, einamasis, t : PSar;
begin
assign(f, f_vardas);
reset(f);
KurkTuscia(prad);
if not eof(f) then
begin
readln(f, s);
einamasis := KurkElementa( s );
PridekPirma( einamasis, prad);
end;
while not(eof(f)) do
begin
readln(f, s);
t := KurkElementa( s );
PridekPo( t, einamasis);
einamasis := t;
end;
close(f);
SkaitykFaila := prad;
end;
function Rask_pask( prad : Psar) : string;
var t : PSar;
begin
t := prad;
while t <> nil do
begin
if t^.kitas=nil then
Rask_pask:=t^.duomuo;
t := t^.kitas;
end;
end;
procedure Spausdink( prad : PSar);
var t : PSar;
begin
t := prad;
while t <> nil do
begin
writeln( t^.duomuo );
t := t^.kitas;
end;
end;
procedure Naikink( var prad : PSar);
var t : PSar;
begin
t := prad;
while t <> nil do
begin
prad := t^.kitas;
Dispose( t );
t := prad;
end;
end;
var prad, kopija: PSar;
pask: string;
begin
{ Get data }
prad := SkaitykFaila('1.txt');
KurkTuscia( kopija );
{ Find last element }
pask := Rask_pask( prad );
{ Create a copy }
kopija := KurkElementa( pask );
kopija^.kitas := prad;
{ Overwrite prad with kopija? }
//prad := kopija; { prad & kopija are now the same thing }
{ Print and release memory }
Spausdink( kopija );
//Naikink( prad ); { delete prad/kopija }
Naikink( kopija ); { nothing left to delete }
readln;
end.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment