📜  C++ STL中的堆栈列表

📅  最后修改于: 2021-05-30 11:22:23             🧑  作者: Mango

先决条件:列表,堆栈

列表是允许非连续内存分配的序列容器。与向量相比,列表遍历速度较慢,但是一旦找到位置,插入和删除操作就会很快。

句法:

堆栈是一种具有LIFO(后进先出)类型的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素。

句法:

堆栈列表是一种具有一系列堆栈的容器,这是一个二维容器,其中N行列表和M列堆栈,这两个维度的大小都是固定的。可以使用迭代器遍历和访问

句法:

例子:

插入使用push()函数可完成堆栈列表的插入。

例子:

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);


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


C++
// C++ program for implementation
// of the lists of stack
  
#include 
using namespace std;
  
// Function for printing the
// elements in a list
void showlist(list > ls)
{
  
    // Traverse the list and
    // print row wise stack
    for (list >::iterator it1
         = ls.begin();
         it1 != ls.end(); ++it1) {
  
        // Copy rows in stack
        stack 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 > ls;
  
    // Insert rows in list
    for (int i = 0; i < 10; ++i) {
        // Insert element in
        // stack as column
        stack 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;
}


遍历使用迭代器执行堆栈列表中的遍历。

C++

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

上面的代码使用开始迭代器ls.begin()和结束迭代器ls.end()在每个索引处遍历list ls 。为了访问元素,它使用(* it)作为堆栈的指针指向列表> ls中的元素。

下面是说明堆栈列表中插入和遍历的程序:

C++

// C++ program for implementation
// of the lists of stack
  
#include 
using namespace std;
  
// Function for printing the
// elements in a list
void showlist(list > ls)
{
  
    // Traverse the list and
    // print row wise stack
    for (list >::iterator it1
         = ls.begin();
         it1 != ls.end(); ++it1) {
  
        // Copy rows in stack
        stack 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 > ls;
  
    // Insert rows in list
    for (int i = 0; i < 10; ++i) {
        // Insert element in
        // stack as column
        stack 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;
}
输出:
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
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程”