Lista de pilas en C++ STL

Requisito previo: lista , pila

trabajo de adaptador

Sintaxis:

stack <Tipo> nombre_de_la_pila;

La lista de pilas es un tipo de contenedor que tiene una serie de pilas, este es un contenedor bidimensional donde N filas de lista y M columnas de pilas, el tamaño de ambas dimensiones no es fijo. iteradores

Sintaxis:

list <pila <Tipo> > nombre_del_contenedor(tamaño);
donde el tamaño es opcional

Ejemplo:

lista <pila <int> > ls(10);
el tamaño de la lista de pilas es 10

Inserción : la inserción en la lista de la pila se realiza mediante la función push() .

Ejemplo:

C++

// Loop to push element
// into a stack
for
    i in[0, n]
    {
        s.push(i)
    }
  
// Push Stack into the list
ls.push_back(s);

Recorrido : El recorrido en una lista de la pila se realiza mediante iteradores .

C++

// Loop to iterate over list
for (iterator it = ls.begin();
     it != ls.end(); it++) {
  
    // Stack of the List
    stack<int>
        st = *it;
  
    while (!st.empty()) {
        cout << st.top();
        st.pop();
    }
}

El código anterior atraviesa list<int> ls en cada índice usando los iteradores iniciales ls.begin() y el iterador final ls.end() . Para acceder al elemento que usa (*it) como pila, hay punteros que apuntan a elementos en la lista <stack <int> > ls .

A continuación se muestra el programa para ilustrar la inserción y el recorrido en listas de pilas:

C++

// C++ program for implementation
// of the lists of stack
  
#include <bits/stdc++.h>
using namespace std;
  
// Function for printing the
// elements in a list
void showlist(list<stack<int> > ls)
{
  
    // Traverse the list and
    // print row wise stack
    for (list<stack<int> >::iterator it1
         = ls.begin();
         it1 != ls.end(); ++it1) {
  
        // Copy rows in stack
        stack<int> it2 = *it1;
  
        // Print stack elements while
        // it is not empty
        while (!it2.empty()) {
            cout << it2.top() << " ";
            it2.pop();
        }
        cout << endl;
    }
}
  
// Driver Code
int main()
{
    // List of stacks
    list<stack<int> > ls;
  
    // Insert rows in list
    for (int i = 0; i < 10; ++i) {
        // Insert element in
        // stack as column
        stack<int> s;
  
        for (int j = i; j < 10; j++) {
            s.push(j);
        }
  
        ls.push_back(s);
    }
  
    cout << "List of stack is : \n";
    showlist(ls);
  
    return 0;
}
Producción:

List of stack is : 
9 8 7 6 5 4 3 2 1 0 
9 8 7 6 5 4 3 2 1 
9 8 7 6 5 4 3 2 
9 8 7 6 5 4 3 
9 8 7 6 5 4 
9 8 7 6 5 
9 8 7 6 
9 8 7 
9 8 
9

Publicación traducida automáticamente

Artículo escrito por Rajput-Ji y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *