Program GF_1; uses crt; type Tinf=integer; List=^TList; TList=record data:TInf; next,prev:List; end; Procedure DelElemPos(var Head:List; pos:integer); var i:integer; tmp,tmpi:List; begin if (pos>=1) and (Head<>nil) then begin i:=1; tmp:=Head; while (tmp<>nil) and (i<>pos) do begin tmp:=tmp^.next; inc(i); end; if tmp<>nil then begin if tmp=Head then begin Head:=tmp^.next; Dispose(tmp); tmp:=nil; end else begin tmpi:=Head; while tmpi^.next<>tmp do tmpi:=tmpi^.next; tmpi^.next:=tmp^.next; Dispose(tmp); tmp:=nil; end; Writeln('Элемент был удалён.'); end else Writeln('Такой номер элемента ' , pos, ' не существует.'); Readln; end else begin Writeln('Такой номер элемента ' ,pos, ' не существует.'); end; end; /// - - - - - - - - - - program - - - - - - - - - - - var Head,Last,Current,tmp:List; i,num,pos,number:integer; value:Tinf; begin while number<>5 do begin case number of // - - - - - - - - delete spisok- - - - - - 1:while head<>nil do begin tmp:=head; head:=head^.next; Dispose(tmp); tmp:=nil; end; // - - - - - - - - delete element- - - - - - 2:begin Writeln('Введите номер элемента для удаления: '); Readln(pos); DelElemPos(Head,pos); end; // - - - - - - - - add- - - - - - 3:begin Writeln('Введите элемент:'); Readln(value); Writeln('Элемент был добавлен'); Readln; GetMem(tmp,sizeof(TList)); tmp^.next:=Head; tmp^.data:=value; Head:=tmp; end; // - - - - - - - - вывод списка- - - - - - 4:begin Writeln('Полченный список: '); While Head<>nil do begin Write(Head^.Data, ' '); Head:=Head^.Next; end; Readln; end; end; clrscr; Writeln('Выберете действие из списка? =)'); Writeln('1 - DEL_s-Удаление всего списка.'); Writeln('2 - DEl_e-Удаление одного элемента.'); Writeln('3 - Add-Добавление элемента.'); Writeln('4 - Vid-Вывести список на экран.'); Writeln('5 - Exit-Выход.'); Readln(number); end; end.