先决条件:列表、堆栈
列表是允许非连续内存分配的序列容器。与向量相比,列表的遍历速度较慢,但一旦找到位置,插入和删除的速度就会很快。
句法:
list
堆栈是一种具有 LIFO(后进先出)工作类型的容器适配器,其中在一端添加一个新元素,并且(顶部)仅从该端删除一个元素。
句法:
stack
List of Stacks是一种具有一系列栈的容器,这是一个二维容器,其中N行列表和M列栈,两个维度的大小都是不固定的。可以使用迭代器遍历和访问。
句法:
list
where size is optional
例子:
list
size of list of stacks is 10
插入:在堆栈列表中的插入是使用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
下面是说明在堆栈列表中插入和遍历的程序:
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 等的准备工作,请参阅完整的面试准备课程。