STRUKTURA STOS

0

Witam czy ktos poda mi strone z zadaniem wykorzystujacym strukture STOS?? Dzieki

W pascalu struktura STOS

0

Jak stos to raczej c/c++

0

no ale nie pomogles mi to niech bedzi c++ a jakas stronka z zadaniem na temat stos-u

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1