网站 模板 html,网站美工外包公司,东莞seo优化关键词排名,六安杂谈#x1f914;stack容器介绍#xff1a; #x1f4d6; stack是一种数据结构#xff0c;也可以被称为堆栈。它是一个容器#xff0c;只允许在最顶层进行插入和删除#xff0c;并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面#…stack容器介绍 stack是一种数据结构也可以被称为堆栈。它是一个容器只允许在最顶层进行插入和删除并且只能访问最后一个插入的元素。这个元素称为栈顶。所有新插入的元素都被放置在栈顶上面当删除元素时它们从栈顶开始向下移动同时也随之被删除。由于stack只允许在顶部进行操作因此它是一个后进先出的数据结构(LIFO)。
stack容器特点
1.只有栈顶元素可以被访问和操作其他元素都不能被直接访问。
2.插入和删除操作的时间复杂度是O(1)非常高效。
3.可以使用top()函数访问或者修改栈顶元素。
4.可以使用empty()函数判断栈是否为空size()函数获得栈的大小。 5.可以使用pop()函数删除栈顶元素。
stack容器图解 stack成员函数
*由于stack独特的数据结构stack容器提供的函数较少。 stack构造函数
1.默认构造stack T name;
stackint d1;
2.拷贝构造函数stack(const stack stk);
stackint d2(d1);
stack赋值函数
1.重载等号运算符stack operator(const stack stk);
stackint d2(d1);
d2 d1;
stack数据存取函数
1.向栈顶添加一个元素pushele;
d1.push(i);
2.从栈顶移除一个元素pop;
d.pop();
3.返回栈顶元素:top;
d.top
stack判断函数
1.判断是否为空empty();
d.empty()
2.返回栈的大小size();
d.size()
3.清空栈clear();
d.clear();
4.交换两个栈swap);
d.swap(d1);
代码实例
#includeiostream
using namespace std;
#includestack
void print(stackint d)
{cout endl;cout 最开始栈大小为:;cout d.size() endl;//利用判断这个栈是否为空来循环弹出所有的栈顶元素while (!d.empty()){//弹出栈顶数据cout d.top() ;//删除当前栈顶元素d.pop();}cout 此时栈大小为:;cout d.size() endl; cout endl;
}
void test01()
{//默认构造stackint d1;for (int i 0; i 9; i){//入栈d1.push(i);}cout 默认构造结果为;print(d1);//重新入栈因为第一次打印之后栈已经为空for (int i 0; i 9; i){d1.push(i);}//拷贝构造stackint d2(d1);cout 拷贝构造结果为;print(d2);//重载等号运算符stackint d3(d1);d3 d1;cout 重载运算符;print(d3);
}
int main()
{test01();
}
运行结果 stack实际应用场景
1.表达式求值stack容器可以用于中缀表达式转换为后缀表达式的计算中利用栈的后进先出特性和运算符的优先级可以对后缀表达式进行求值。
2.编辑器撤销和重做功能可以使用两个stack容器一个保存撤销的动作一个保存重做的动作。
3.函数调用栈当函数调用时程序会把当前函数的调用栈信息压入栈中当函数返回时程序会从栈中弹出该函数的调用栈信息实现函数调用的嵌套。
4.括号匹配使用一个栈容器可以很容易地判断一个表达式中的括号是否匹配如果左括号就入栈如果右括号就出栈最后栈中为空则说明左右括号匹配。
5.内存分配栈容器也可以用于内存分配因为栈会按照LIFO的原则对元素进行管理可以方便地控制内存分配和释放适合于需要严格控制内存使用和回收的场合。
结束