c++栈条记

打印 上一主题 下一主题

主题 630|帖子 630|积分 1890

一种常见的数据布局,遵循后进先出,先辈后出的原则。地点不连续,栈顶(top)

1.常见函数
stack<int> s;定义一个参数类型为int 的栈  名为s
s.push()向栈中插入元素
s.emplace()压栈,无返回值
s.pop()删除栈顶元素
s.top()返回栈顶元素,该元素不出栈
s.empty()判定栈是否为空,是返回 true
s.size()返回栈中元素数量
push( ) 与 emplace( ) 的区别:
首先 s.push() 与 s.emplace() 的最终执行结果是一样的,都是在栈顶参加一个元素,差别就是压栈元素的来源大概不同。
对于包含简朴的基本类型的栈来说两者之间几乎没有差别,但当栈的类型是一些大型、复杂的类,具有复杂的构造函数或复制构造函数时,区别就出现了:
push() 接受一个已经存在的元素,并将它的副本附加到容器中。push总是只接受一个参数,即要复制到栈顶中的元素。
emplace() 可以现场通过参数列表创建该类的一个实例放到栈顶。要放置的参数将作为参数转发给栈中所含的类的构造函数。假如类有默认构造函数,emplace 可以有一个参数、多个参数,或者根本没有参数。
例如,当栈的参数是类时,push的参数必须是已实例化的类名作为参数,而 emplace 则可以直接利用类初始化参数现场初始化一个类实例参加栈顶。因此 emplace 的功能比 push 更强大,且兼容 push,但一样寻常利用过程中,利用 push 就富足了。
2.基本操作   
(1)判定是否为空
  1. bool iE(SqStack S){
  2.         if (S.top==-1)        {
  3.                 return true;
  4.         }
  5.         return false;
  6. }
复制代码
(2)判定栈是否满
  1. bool iF(SqStack S){
  2.         if (S.top == MAXSIZE - 1)        {
  3.                 return true;
  4.         }
  5.         return false;
  6. }
复制代码
(3)入栈
  1. bool Push(SqStack& S, ElemType e){
  2.         bool flag = iF(S);
  3.         if (flag==true)        {
  4.                 printf("栈满\n");
  5.                 return false;
  6.         }
  7.         S.top++;
  8.         S.data[S.top] = e;
  9.         return true;
  10. }
复制代码
(4)出栈
  1. bool Pop(SqStack& S, ElemType& e){
  2.         bool flag = iE(S);
  3.         if (flag)        {
  4.                 printf("栈空\n");
  5.                 return false;
  6.         }
  7.         e = S.data[S.top];
  8.         S.top--;
  9.         return true;
  10. }
复制代码
(5)
  1. bool GT(SqStack& S, ElemType& e){
  2.         bool flag = iE(S);
  3.         if (flag){
  4.                 return false;
  5.         }
  6.         e = S.data[S.top];
  7.         return true;
  8. }
复制代码
 优先队列priority_queue
普通队列+优先级排序=优先队列
优先队列按照给定得比力规则默认从大到小进行排序,与普通队列区别于队首元素为top非front
  1. //优先队列展开内容
  2. priority_queue<int,vector<int>,less<int>>q;//大根堆
  3. priority_queue<int,vector<int>,greater<int>>q;//小根堆
复制代码


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表