program lista; {$APPTYPE CONSOLE} uses SysUtils,windows; type wsk= ^a; a = record k: longint; w: wsk; end; procedure lista; var B,T: array of longint; pa,j,p,zakres,n,i,l,x,z,c: longint; pierw,poprz,q,head:wsk; t1,t2,t3,t4,t5: extended; t1a,t1b,t2a,t2b,t3a,t3b,t4a,t4b,t5a,t5b,freq:Int64; f:textfile; h:boolean; begin AssignFile(f,'lista.txt'); reset(f); Append(f); /////////////////////////////////////////////////// readln(n); Writeln(F, 'lista n ',n); zakres:=3000000; SetLength(B,zakres); for i:=0 to zakres do B[i]:=1; SetLength(T,n); p:=random(zakres)+1; T[0]:=p; B[p]:=0; pa:=1; if zakres>=n then BEgin // Writeln('begin'); // Write(T[0],' '); Repeat i:=pa; j:=random(zakres)+1; if B[j]=1 then Begin T[pa]:=j; B[j]:=0; //Write('j ',j,'wartosc = ',B[j]); // Write(' ',T[a],' '); pa:=pa+1; end; until (pa=(n)); End Else BEgin Writeln('Zly Zakres'); readln; exit; end; // for i:=0 to n-1 do Write(T[i],' '); // readln; if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t1a); pierw:=nil; //1)tworzenie for i:=0 to n-1 do begin new(q); x:=T[i]; // Writeln('x ',x); // readln; q^.k:=x; poprz:=pierw; if (pierw=nil) or (pierw^.k>q^.k) then begin q^.w:=pierw; pierw:=q; end else begin while (poprz^.w<>nil) and (poprz^.w^.knil do begin write(head.k,' '); head:=head.w; end; } // readln; //////////////////////////////////////////////// if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t3a); head:=pierw; z:=n div 10; for c:=1 to z do //3)wyszukiwanie wylosowanych elementów begin x:= random(zakres)+1; //x:=2; while head <> nil do begin if head.k=x then write('tak');//h:=true; head:=head.w; end; // write('head',head.k); // write('x',x); //if head.k=x then write('tak');//h:=true; end; QueryPerformanceCounter(t3b); t3:=(t3b-t3a)/Freq*1000;; Writeln('czas wyszukiwania ',t3,' '); Writeln(F,'czas wyszukiwania ',t3:0:2,' '); ////////////////////////////////////////////////////////// if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t5a); head:=pierw; while head<>nil do begin head.k:=head.k+1; head:=head.w; end; QueryPerformanceCounter(t5b); t5:=(t5b-t5a)/Freq*1000;; Writeln('czas przegladania ',t5,' '); Writeln(F,'czas przegladania ',t5:0:2,' '); /////////////////////////////////////////////////////////// if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t2a); z:=n div 10; // for c:=1 to z do //2)dodawanie wylosowanych elementów begin x:= random(zakres)+1; //writeln(x,' wylosowany '); new(q); q^.k:=x; poprz:=pierw; if (pierw=nil) or (pierw^.k>q^.k) then begin q^.w:=pierw; pierw:=q; end else begin while (poprz^.w<>nil) and (poprz^.w^.knil do begin write(head.k,' '); head:=head.w; end; } QueryPerformanceCounter(t2b); t2:=(t2b-t2a)/Freq*1000;; Writeln('czas dodawania losowych elementów ',t2,' '); Writeln(F,'czas dodawania ',t2:0:2,' '); /////////////////////////////////////////////////////////// { if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t3a); head:=pierw; z:=n div 10; for c:=1 to z do //3)wyszukiwanie wylosowanych elementów begin x:= random(zakres)+1; while (head.k=x) or (head=nil) do head:=head.w; end; QueryPerformanceCounter(t3b); t3:=(t3b-t3a)/Freq*1000;; Writeln('czas wyszukiwania ',t3,' '); } ////////////////////////////////////////////////// if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t4a); for c:=1 to Z do //4)usuwanie begin x:=random(zakres)+1; if x>=pierw^.k then begin if x=pierw^.k then begin pierw:=pierw^.w; dispose(head); end else begin while (head^.w<>nil) or (head^.w^.knil do begin write(head.k,' '); head:=head.w; end;} QueryPerformanceCounter(t4b); t4:=(t4b-t4a)/Freq*1000;; Writeln('czas usuwania ',t4,' '); Writeln(F,'czas usuwania ',t4:0:2,' '); Closefile(F); ////////////////////////////////////////////////////////// { if QueryPerformanceFrequency(Freq) then QueryPerformanceCounter(t5a); head:=pierw; while head<>nil do begin head.k:=head.k+1; head:=head.w; end; QueryPerformanceCounter(t5b); t5:=(t5b-t5a)/Freq*1000;; Writeln('czas przegladania ',t5,' ');} { writeln('ending'); head:=pierw; while head<>nil do begin write(head.k,' '); head:=head.w; end;} t:=nil; b:=nil; end; // procedure przegladanie; //////////////////////////////////////////// begin lista; { TODO -oUser -cConsole Main : Insert code here } readln; end.