Program work_N3_spiski; Uses Crt; Type Point = ^List; List = Record Inf : Integer; Next : Point; END; Var Head, Temp, First : Point; Data : Integer; FileOfData : File Of Integer; NameOfFile : String; Buffer, K, I : Integer; V1, V2 : Point; FlagExitMenu : Boolean; FlagSelect : Integer; {CREATE NAME OF FILE} Procedure CreateName; BEGIN WriteLn('Enter name of file: '); Read(NameOfFile); END; {CREATE FILE} Procedure CreateFile; BEGIN CreateName; WriteLn('Enter count elements of the file: '); ReadLn(K); Assign(FileOfData,NameOfFile); {$I-} Rewrite(FileOfData); For I := 1 To K Do BEGIN WriteLn('Enter element: '); ReadLn(Data); Write(FileOfData,Data); END; Close(FileOfData); END; {HEAD IN THE END} Procedure Inp(Var NameOfFile : String); BEGIN Assign(FileOfData,'NameOfFile'); Reset(FileOfData); If FileSize(FileOfData) = 0 Then BEGIN WriteLn('File is empty'); ReadLn; Exit; END; While Not EOF(FileOfData) Do BEGIN Read(FileOfData,Data); New(Temp); Temp^.Inf := Data; Temp^.Next := Head; Head := Temp; END; Close(FileOfData); END; {HEAD IN THE BEGIN} Procedure _Inp(Var NameOfFile : String); BEGIN Assign(FileOfData,'NameOfFile'); Reset(FileOfData); If FileSize(FileOfData) = 0 Then BEGIN WriteLn('File is empty'); ReadLn; Exit; END; While Not EOF(FileOfData) Do BEGIN Read(FileOfData,Data); New(Temp); Temp^.Inf := Data; Temp^.Next := NIL; If Head = NIL Then Head := Temp Else First^.Next := Temp; First := Temp; END; Close(FileOfData); END; {OUTPUT OF THE LIST} Procedure Out; BEGIN Temp := Head; WriteLn('Elements of the list: '); While (Temp <> NIL) Do BEGIN WriteLn(Temp^.Inf); Temp := Temp^.Next; END; END; {DELETE OF ELEMENTS OF THE LIST} Procedure Del; BEGIN While (Head <> NIL) Do BEGIN Dispose(Head); Head := Temp; END; END; {SORTING OF LIST} Procedure S(L : Point); BEGIN V1 := L; While V1^.Next <> NIL Do BEGIN V2 := V1^.Next; While V2 <> NIL Do BEGIN If V1^.Inf > V2^.Inf Then BEGIN Buffer := V1^.Inf; V1^.Inf := V2^.Inf; V2^.Inf := Buffer; END; V2 := V2^.Next; END; V1 := V1^.Next; END; END; {=======MAIN PROGRAM=======} BEGIN ClrScr; FlagExitMenu := False; Repeat WriteLn('Choose point: '); WriteLn('0 - Create of file'); WriteLn('1 - FIFO'); WriteLn('2 - LIFO'); WriteLn('3 - Sorting of list'); WriteLn('4 - Sorting of list number two'); WriteLn('5 - Exit'); ReadLn(FlagSelect); Case FlagSelect Of 0 : BEGIN CreateFile; END; 1 : BEGIN _Inp(NameOfFile); Out; Del; END; 2 : BEGIN Inp(NameOfFile); Out; Del; END; 3 : BEGIN Inp(NameOfFile); S(Temp); Out; Del; END; { 4 : BEGIN END;} 5 : FlagExitMenu := True; END; WriteLn('Please, push batton "Enter"'); ReadLn; ClrScr; Until FlagExitMenu; END.