Gli stack sono un tipo di adattatori per contenitori con funzionamento di tipo LIFO (Last In First Out), in cui un nuovo elemento viene aggiunto a un'estremità (in alto) e un elemento viene rimosso solo da quell'estremità. Stack utilizza un oggetto incapsulato di entrambi vettore o deque (per impostazione predefinita) o elenco (classe contenitore sequenziale) come contenitore sottostante, fornendo un insieme specifico di funzioni membro per accedere ai suoi elementi.
inizializzatore di dizionario C#
Se c'è confusione nel ricordare la differenza fondamentale tra pila e coda, allora basta avere un esempio di vita reale per questa differenziazione, per pila, pila di libri possiamo prendere facilmente il libro in alto e per la coda ricorda quando devi stare in coda davanti del bancomat per prelevare contanti, la prima persona vicina al bancomat ha la prima possibilità di prelevare denaro dal bancomat. Quindi, la coda è di tipo FIFO (First In First Out).
Sintassi dello stack: -
Per creare uno stack, dobbiamo includere il file header nel nostro codice. Usiamo quindi questa sintassi per definire std::stack:
| modello |
Tipo – è il Tipo di elemento contenuto nello std::stack. Può essere qualsiasi tipo C++ valido o anche un tipo definito dall'utente.
Contenitore – è il Tipo dell'oggetto contenitore sottostante.
Tipi di membri: -
value_type- Il primo parametro del modello, T. Denota i tipi di elemento.
container_type: il secondo parametro del modello, Container. Indica il tipo di contenitore sottostante.
size_type: tipo integrale senza segno.
Le funzioni associate allo stack sono:
vuoto() – Restituisce se lo stack è vuoto – Complessità temporale: O(1)
size() – Restituisce la dimensione dello stack – Complessità temporale: O(1)
top() – Restituisce un riferimento all'elemento più in alto dello stack – Complessità temporale: O(1)
push(g) – Aggiunge l'elemento 'g' in cima allo stack – Complessità temporale: O(1)
pop() – Elimina l'elemento inserito più recentemente nello stack – Complessità temporale: O(1)
C++
cos'è la mappa Java
#include> #include> using> namespace> std;> int> main() {> >stack<>int>>pila;> >stack.push(21);>// The values pushed in the stack should be of the same data which is written during declaration of stack> >stack.push(22);> >stack.push(24);> >stack.push(25);> >int> num=0;> >stack.push(num);> >stack.pop();> >stack.pop();> >stack.pop();> > >while> (!stack.empty()) {> >cout << stack.top() <<>' '>;> >stack.pop();> >}> }> |
>
>Produzione
22 21>
Complessità temporale: La complessità temporale di questo programma è O(N), dove N è il numero totale di elementi nello stack. Il ciclo while ripete N volte, estraendo elementi dallo stack e stampandoli.
Complessità spaziale: La complessità spaziale di questo programma è O(N), dove N è il numero totale di elementi nello stack. La struttura dei dati dello stack utilizza lo spazio proporzionale al numero di elementi memorizzati in esso. In questo caso, la dimensione massima dello stack è 5, quindi la complessità dello spazio è costante e può essere considerata anch'essa come O(1).
Codice Spiegazione:
- Includi il file header iostream o nel nostro codice per utilizzare le sue funzioni.
- Includi il file di intestazione dello stack nel nostro codice per utilizzare le sue funzioni se già incluso, quindi non è necessario il file di intestazione dello stack perché ha già una funzione incorporata al suo interno.
- Includi lo spazio dei nomi std nel nostro codice per utilizzare le sue classi senza chiamarlo.
- Chiama la funzione main(). La logica del programma dovrebbe essere aggiunta all'interno di questa funzione.
- Crea uno stack per memorizzare valori interi.
- Utilizzare la funzione push() per inserire il valore 21 nello stack.
- Utilizzare la funzione push() per inserire il valore 22 nello stack.
- Utilizzare la funzione push() per inserire il valore 24 nello stack.
- Utilizzare la funzione push() per inserire il valore 25 nello stack.
- Utilizzare una variabile intera num per immettere un valore di variabile. Qui il suo valore è 0, ma possiamo assegnare qualsiasi valore intero usando cin>> num.
- Utilizzare la funzione push() per inserire il valore della variabile num.
- Utilizza la funzione pop() per rimuovere l'elemento in cima allo stack, ovvero 25. L'elemento in cima ora diventa 24.
- Utilizza la funzione pop() per rimuovere l'elemento in cima allo stack, ovvero 24. L'elemento in cima ora diventa 22.
- Utilizza un ciclo while e la funzione empty() per verificare se lo stack NON è vuoto. IL ! è l'operatore NOT. Pertanto, quando lo stack non è vuoto, la funzione empty() restituirà false e l'operatore NOT lo convertirà in true e il ciclo while continuerà a funzionare. Ma, quando lo stack diventa vuoto, la funzione empty() restituirà true e l'operatore NOT lo renderà falso e il ciclo terminerà.
- Stampa del contenuto corrente dello stack sulla console.
- Chiama la funzione pop() sullo stack.
- Fine del corpo del ciclo while.
- Fine del corpo della funzione main().
Elenco delle funzioni di Stack:
- stack::top() in C++ STL
- stack::empty() e stack::size() in C++ STL
- stack::push() e stack::pop() in C++ STL
- stack::swap() in C++ STL
- stack::emplace() in C++ STL
- Articoli recenti sullo stack C++