先决条件:列表,堆栈
列表是允许非连续内存分配的序列容器。与向量相比,列表遍历速度较慢,但是一旦找到位置,插入和删除操作就会很快。
句法:
list
堆栈是一种具有LIFO(后进先出)类型的容器适配器,其中在一端添加了一个新元素,而(顶部)仅从该端删除了一个元素。
句法:
stack
堆栈列表是一种具有一系列堆栈的容器,这是一个二维容器,其中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等的更多准备工作,请参阅“完整面试准备课程” 。