PDA

View Full Version : [C++] Le funzioni push, pop & empty della Pila sono "standard"?


sangueimpazzito
07-09-2004, 10:11
Ciao ragazzi.
Spulciando fra gli appunti di programmazione ho trovato due diverse implementazioni della Pila:
- una che fa i controlli (che ci sia spazio o meno dentro la pila) prima di invocare le funzioni;
- una che controlla direttamente dentro le funzioni (se c'è spazio o meno).
Mi chiedevo...
Quale delle due è migliore (sempre che ce ne sia una migliore...)?!?
C'è uno standard per l'implementazione della pila?!?
Grazie a tutti.

cionci
07-09-2004, 12:59
Per implementare una pila potresti usare la classe List della Standard Template Library...

http://www.msoe.edu/eecs/ce/courseinfo/stl/list.htm

Con push_back e pop_front fai in due secondi...

Maverick82^
08-09-2004, 15:27
Stacchiamoci un pò dalle librerie ..... ;)

Potresti anche implementarla con un semplice array, ovviamente con tutti i suoi limiti.

Object[] data;
int top=-1;

Object pop() {

Object t = data[top];
data[top] = null;
top = top - 1;
return t;

}


void push(Object t) {

top = top + 1;
data[top] = t;

}


byez

cionci
08-09-2004, 16:06
Un po' bruttina per il C++ ;)

Almeno una classicina o un bel template ci vorrebbe :)

/\/\@®¢Ø
09-09-2004, 11:38
Originariamente inviato da sangueimpazzito
Ciao ragazzi.
Spulciando fra gli appunti di programmazione ho trovato due diverse implementazioni della Pila:
- una che fa i controlli (che ci sia spazio o meno dentro la pila) prima di invocare le funzioni;
- una che controlla direttamente dentro le funzioni (se c'è spazio o meno).
Mi chiedevo...
Quale delle due è migliore (sempre che ce ne sia una migliore...)?!?

In generale direi la seconda, perche' in sostanza la prima i controlli non li fa (li fa chi chiama le funzioni, non la pila ;) ) e la differenza di prestazioni nella maggior parte dei casi non vale il sacrificio.

C'è uno standard per l'implementazione della pila?!?

Direi che qualsiasi struttura dati che offra top,pop,push sia a tutti gli effetti una pila, anche se forse i due metodi piu' classici per implementarla sono l'array e la lista semplice.