Witam czy ktos poda mi strone z zadaniem wykorzystujacym strukture STOS?? Dzieki
W pascalu struktura STOS
Witam czy ktos poda mi strone z zadaniem wykorzystujacym strukture STOS?? Dzieki
W pascalu struktura STOS
Jak stos to raczej c/c++
no ale nie pomogles mi to niech bedzi c++ a jakas stronka z zadaniem na temat stos-u
Dzieki dynamicznym tablicom, prosciej niz w delphi, chyba nie da się już zaimplementować stosu :
{$APPTYPE CONSOLE}
type stacktype=array of array of byte; // char,shortint,boolean aby 1 bajt
procedure push(var a:stacktype;var buf;size:cardinal);
var i:cardinal;
begin
i:=length(a);
setlength(a,i+1);
setlength(a[i],size);
move(buf,a[i,0],size);
end;
function pop(var a:stacktype;var buf;size:cardinal):boolean;
var i:cardinal;
begin
pop:=false;
i:=length(a);
if(i=0)then exit;
dec(i);
move(a[i,0],buf,size);
finalize(a[i]);
setlength(a,i);
pop:=true;
end;
var
stos:stacktype;
i:integer;
begin
setlength(stos,0);
i:=$12345678;
writeln(i);
push(stos,i,sizeof(i));
i:=0;
writeln(i);
pop(stos,i,sizeof(i));
writeln(i);
if not pop(stos,i,sizeof(i))then writeln('stack underflow'); // oczywiscie wypisze
readln;
end.
a dla pascala proponowałbym pomyśleć o liście a w szczególności o kolejce filo (zmien wordy na cardinale i mozesz swobodnie uzyc w delphi)...
type
stacktypeptr=^stacktype;
stacktype=
record
nx:stacktypeptr;
buf:pointer;
end;
procedure push(var a:stacktypeptr;var buf;size:word);
var t:stacktypeptr;
begin
new(t);
getmem(t^.buf,size);
move(buf,t^.buf^,size);
t^.nx:=a;
a:=t;
end;
function pop(var a:stacktypeptr;var buf;size:word):boolean;
var t:stacktypeptr;
begin
pop:=false;
if a=nil then exit;
t:=a;
a:=a^.nx;
move(t^.buf^,buf,size);
freemem(t^.buf,size); {4 delphi: freemem(t^.buf);}
dispose(t);
pop:=true;
end;
var
stos:stacktypeptr;
i:integer;
begin
stos:=nil;
i:=$1234;
writeln(i);
push(stos,i,sizeof(i));
i:=0;
writeln(i);
pop(stos,i,sizeof(i));
writeln(i);
if not pop(stos,i,sizeof(i))then writeln('stack underflow'); // oczywiscie wypisze
readln;
end.
// Jesli chodzi o przyklad wykorzystania ? Na pewno stos jest predestynowany dla odwrotnej notacji polskiej i programów liczących tą metodą. Albo też http://4programmers.net/Forum/viewtopic.php?id=54299