Добавление, удаление, редактирование, чтение списков
Категория: Delphi/Pascal
2012-02-23 21:38:53
code: #pascal
program course9; type link = ^kom; kom = record ini : integer; next : link; end; var pn : link; arg, j, m : integer; procedure add(var n : link; x, num:integer); var neo, ind : link; i : integer; begin new(neo); neo^.ini:=x; if n=nil then begin n:= neo; neo^.next:=nil; end else if num=1 then begin neo^.next:=n; n:= neo; end else begin i:=0; ind:= n; while (i<>num-2) and (ind^.next<>nil) do begin i:= i+1; ind:= ind^.next; end; neo^.next:=ind^.next; ind^.next:= neo; end; end; { add } procedure del(var n : link; num:integer); var neo, ind : link; i : integer; begin if n<>nil then begin if num=1 then begin neo:=n; n:=n^.next; dispose(neo); end else begin i:=0; ind:=n; while (i<>num-2) and (ind^.next<>nil) do begin i:=i+1; ind:=ind^.next; end; if ind^.next<>nil then begin neo:=ind^.next; ind^.next:=neo^.next; dispose(neo); end; end; end; end; { del } procedure veiw(n : link); var ind : link; i : integer; begin ind:=n; i:=0; if ind=nil then writeln ('List is empty') else begin writeln; writeln('The list is'); while ind<>nil do begin i:=i+1; writeln(i,') ',ind^.ini); ind:=ind^.next; end; end; end; { veiw } procedure spec(var n : link; num:integer); var ind : link; i : integer; begin i:=0; ind:=n; while ind<>nil do begin i:=i+1; ind:=ind^.next; end; if i<num then writeln ('The list consists of only ',i,' elements') else begin i:=0; while i<>num do begin i:= i+1; ind:=n; n:=n^.next; dispose(ind); end; end; end; { spec } begin pn:=nil; m:=1; while m<>0 do begin writeln; writeln; writeln('Type "1" to ADD new element to the list'); writeln('Type "2" to DELETE element from the list'); writeln('Type "3" to VEIW the list'); writeln('Type "4" to DELETE first k-elements'); writeln('Type "0" to exit program'); writeln; readln(m); case m of 1 : begin write('Enter new element : '); readln(arg); write('Enter place : '); readln(j); add(pn,arg,j); end; 2 : begin write('Enter number of the element : '); readln(j); del(pn,j); end; 3 : begin veiw(pn); end; 4 : begin writeln('Enter number of elements : '); readln(j); spec(pn,j); end; end; { case } end; end.
Поделиться: