寒假集训一期(4) |
您所在的位置:网站首页 › 栈中元素倒置 › 寒假集训一期(4) |
文章目录
一、 vector 动态数组常见操作如何定义二维vector结构体二维vector
一、栈和队列CSP-J第一轮常考题做题方法总结——模拟
二、栈的基本操作函数三、队列的基本操作函数双端队列优先队列四、题目数组逆序重存放分析:
【模板】栈分析注意
【模板】队列分析
一点话
一、 vector 动态数组
简单来说,vector是一个没有长度限制的数组,也叫不定长数组。 常见操作 函数功能c.clear()移除容器中所有数据c.empty()判断容器是否为空c.erase(pos)删除pos位置的数据c.erase(begin,end)删除[begin,end]区间的数据c.front()传回第一个数据c.insert(pos,elem)在pos位置插入一个elem拷贝c.pop_back()删除最后一个数据c.push_back(elem)在尾部加入一个数据c.resize(num)重新设置该容器的大小c.size()返回容器中实际数据的个数c.begin()返回指向容器第一个元素的迭代器c.end()返回指向容器最后一个元素的迭代器 如何定义二维vector有两种方法: 法一: int n = 5, m = 6; vector obj(n);//定义类型为vector的vector for(int i = 0; i int x, y, z; }tmp; vectora;//这里的node就是结构体上的node今天讲一下STL里面的栈和队列的基本操作,栈和队列都是一种数据结构,他们的共同点是都是线性结构,当然,他俩也有不同的地方,栈是一种先进后出的数据结构,而队列则是一种先进先出的数据结构。 一、栈和队列可以这样来说,队列就像一个羽毛球盒,从一边放进去就从另一边拿出来,如果从放进去的那一边一边拿,就会造成羽毛损坏,如图 而栈则可以看成一个乒乓球盒,也就是说乒乓球盒只有一个口,越先放进去就会被压到最下面,从而就会越后出来,如图
这道题可以让我们更深刻的理解栈的基本概念。遇到这种题目,我们可以利用栈的概念解决,首先先找准目前没有进过栈的第一个数,然后将目前未进栈元素到我们刚刚找的那个元素全部依次进栈,然后查看出栈顺序是否合法,依次模拟,即可得出结果。 二、栈的基本操作函数push 元素入栈 push元素入栈pop栈顶元素出栈front获取栈底元素size获取栈长度empty栈判空 三、队列的基本操作函数 push元素入队列pop队尾元素出栈front获取队头元素size获取队列长度empty队列判空top获取队尾元素 双端队列顾名思义,可以从两边进,两边出 操作解释push_back()在队尾压入元素push_front():在队头压入元素pop_back():删除最后一个元素pop_front():删除第一个元素front():返回第一个元素的引用back():返回最后一个元素的引用 优先队列优先队列是队列的一种,他是自动帮我们排序的,内部结构是大根堆,常见操作与一般的队列一样,但是定义方式有所不同 如:prioriyt_queue q; 此外,我们经常为了适应题目背景,重载优先队列的排序顺序,一般是在结构体内实现的,大致如下 struct cmp{ bool operator ()(int a, int b){ return (a % 100) > (b % 100); } }; void main(){ priority_queueq; }如果想要把结构体与优先队列结合起来,那么就需要重载小于符号,具体思想和上面差不多,格式如下: struct node{ int x, y; bool operator int to, cost; }; struct cmp{ bool operator ()(node a, node b){ return a.cost > b.cost; } }; priority_queue priq; 四、题目 数组逆序重存放题目描述 将一个数组中的值按逆序重新存放。例如,原来的顺序为 8 , 6 , 5 , 4 , 1 8,6,5,4,1 8,6,5,4,1。要求改为 1 , 4 , 5 , 6 , 8 1,4,5,6,8 1,4,5,6,8。 输入格式 输入为两行:第一行数组中元素的个数 n n n( 1 < n ≤ 100 1 \lt n \le 100 1 cin>>x; h.push(x); } for(i=0;i ios::sync_with_stdio(false); cin>>n; for(i=1;i for(z=1;z>c; if(c=="push"){ cin>>x; h.push(x); continue; } if(c=="pop"){ if(!h.size()){ cout cout ios::sync_with_stdio(false); cin>>n; for(i=1;i cin>>k; h.push(k); continue; } if(f=="2"){ if(h.size()==0){ cout if(h.size()==0){ cout |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |