const N = 5; var S: array[1..N,1..N] of integer; procedure VytiskniS; var x,y: integer; begin for y:=1 to N do begin for x := 1 to N do if s[x,y]<>0 then write( S[x,y]:4 ) else write( '.':4 ); writeln end; readln end; procedure Oznac( x,y, k: integer ); begin if k > N*N then begin VytiskniS; exit end; if (x>=1) and (x<=N) and (y>=1) and (y<=N) then if S[x,y]=0 then begin S[x,y] := k; //VytiskniS; Oznac( x-1,y+2, k+1 ); Oznac( x-1,y-2, k+1 ); Oznac( x+1,y+2, k+1 ); Oznac( x+1,y-2, k+1 ); Oznac( x-2,y+1, k+1 ); Oznac( x-2,y-1, k+1 ); Oznac( x+2,y+1, k+1 ); Oznac( x+2,y-1, k+1 ); S[x,y] := 0 end; end; begin //Oznac( 2,1, 1 ); Oznac( 1,1, 1 ); readln; readln end. { #################################################### } type PPrvek = ^TPrvek; TPrvek = record Hodnota: integer; Dalsi: PPrvek end; var seznam: PPrvek; konec: PPrvek; procedure Vytiskni( zac: PPrvek ); var p: PPrvek; begin p := zac; while p<>NIL do begin write( p^.Hodnota,' ' ); p := p^.Dalsi end; writeln( '...KONEC' ) end; procedure PridejPrvekNaZacatek( var zac: PPrvek; x: integer ); var p: PPrvek; begin new( p ); p^.Hodnota := x; p^.Dalsi := zac; zac := p end; procedure SmazPrvniPrvek( var zac: PPrvek ); var pom: PPrvek; begin if (zac=NIL) then RunError( 777 ); pom := zac; zac := zac^.Dalsi; dispose( pom ) end; procedure PridejPrvekNaKonec( var zac: PPrvek; x: integer ); var p,n: PPrvek; begin if zac = NIL then PridejPrvekNaZacatek( zac, x ) else begin p := zac; while p^.Dalsi<>NIL do p := p^.Dalsi; new( n ); n^.Hodnota := x; n^.Dalsi := NIL; p^.Dalsi := n end end; procedure PridejPrvekNaKonec2( var zac,kon: PPrvek; x: integer ); var p,n: PPrvek; begin if zac = NIL then begin PridejPrvekNaZacatek( zac, x ); kon := zac end else begin new( n ); n^.Hodnota := x; n^.Dalsi := NIL; kon^.Dalsi := n; kon := n end end; var i: integer; begin seznam := NIL; Vytiskni( seznam ); new( seznam ); seznam^.Hodnota := 57; seznam^.Dalsi := NIL; Vytiskni( seznam ); PridejPrvekNaZacatek( seznam, 30 ); PridejPrvekNaZacatek( seznam, 20 ); PridejPrvekNaZacatek( seznam, 10 ); Vytiskni( seznam ); seznam := NIL; Vytiskni( seznam ); seznam := NIL; PridejPrvekNaZacatek( seznam, 111 ); Vytiskni( seznam ); writeln( 'mazani:' ); seznam := NIL; PridejPrvekNaZacatek( seznam, 29 ); PridejPrvekNaZacatek( seznam, 19 ); PridejPrvekNaZacatek( seznam, 9 ); Vytiskni( seznam ); SmazPrvniPrvek( seznam ); Vytiskni( seznam ); SmazPrvniPrvek( seznam ); Vytiskni( seznam ); SmazPrvniPrvek( seznam ); Vytiskni( seznam ); writeln( 'pridavani na konec:' ); seznam := NIL; PridejPrvekNaKonec( seznam, 11 ); PridejPrvekNaKonec( seznam, 21 ); PridejPrvekNaKonec( seznam, 31 ); PridejPrvekNaKonec( seznam, 41 ); PridejPrvekNaKonec( seznam, 51 ); Vytiskni( seznam ); writeln( 'pridavani na konec 2:' ); seznam := NIL; PridejPrvekNaKonec2( seznam, konec, 12 ); PridejPrvekNaKonec2( seznam, konec, 22 ); PridejPrvekNaKonec2( seznam, konec, 32 ); PridejPrvekNaKonec2( seznam, konec, 42 ); PridejPrvekNaKonec2( seznam, konec, 52 ); PridejPrvekNaKonec2( seznam, konec, 62 ); Vytiskni( seznam ); readln; seznam := NIL; for i:=1 to 100000 do begin write( i,' ',#13 ); PridejPrvekNaKonec2( seznam, konec, i ) end; readln; readln end. program Project1; var p: ^string; begin p^ := 'Ahoj babi, Ahoj babi, Ahoj babi, Ahoj babi, Ahoj babi, Ahoj babi, Ahoj babi, Ahoj babi, '; end.