【2013微软校招面试题】设计一个栈,当栈满时,新入栈的元素循环回第一个元素的位置将其覆盖
来源:互联网 发布:网络诽谤司法解释 编辑:程序博客网 时间:2024/05/17 07:09
问题,如标题所示~
解题:见代码如下
#include <iostream>#include <assert.h>using namespace std;class RecycleStack{public:RecycleStack(int MaxSize):maxSize(MaxSize),curSize(0),tail(0) {s_arr = new int[maxSize];}~RecycleStack(){delete []s_arr;}void push(int value){if(curSize < maxSize) //栈未满,正常入栈{s_arr[curSize++] = value;} else //栈已满,覆盖栈底{s_arr[tail] = value;tail = (tail+1) % maxSize; //有可能循环回到s_arr[0]位置}}void pop(){assert(curSize != 0); //参数检查curSize--; }int top(){return s_arr[(tail -1 + curSize) % maxSize];}bool empty(){return curSize == 0;}private:int maxSize;int curSize;int *s_arr; //存储栈中的数据int tail; //指向栈底元素};int main(){RecycleStack a(4);int arr[8] = {6,5,3,1,8,2,9,4};for(int i=0; i<8; i++){a.push( arr[i] );cout<<"栈顶为:"<<a.top()<<endl;}return 0;}
欢迎读者留言探讨,O(∩_∩)O~
- 【2013微软校招面试题】设计一个栈,当栈满时,新入栈的元素循环回第一个元素的位置将其覆盖
- 完美算法 --将一个具有n个元素的数组向左循环移动i个位置
- 将数据中的元素都向前移动一个位置,最后一个元素的值是原来第一个元素的值,然后输出这个数组。
- 将一个具有n个元素的数组向左循环移动i个位置,使用O(n)复杂度
- 将数组元素循环流动的问题(即数组第一个元素变成最后一个,后面的补上,如此循环几次)
- 二分查找(返回目标元素的第一个位置、最后一个位置)
- 二分查找(返回目标元素的第一个位置、最后一个位置)
- 给出一个循环双链表,p指向第一个元素值为x的节点,设计算法删除节点*p
- 设计函数返回一个数组中所有元素被第一个元素除的结果
- iOS开发,一个数组,里面的元素依次的向后移动,移出的元素依次补到第一个位置
- 容器的最后一个元素是否大于第一个元素
- 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
- 编程将一个二维数组元素变换为逆向存放,即按元素在内存中的物理排列位置,第一个元素变成倒数第一个元素,第二个元素变成倒数第二个元素,依此类推。
- 微软试题:查找数组中最小的k个元素
- php 获取数组第一个元素 以及最后一个元素 && 最后一个元素的键名
- freemarker取list的第一个元素 循环用法
- 输入一个数组,最大的元素与第一个元素交换,最小的元素与最后一个元素交换
- 编写一个循环将list容器的元素逆序输出
- K2 blackpearl 流程开发(二)
- 谈谈Unicode编码,简要解释UCS、UTF、BMP、BOM等名词
- _DllMain@12 already defined in CMPNT.obj 错误说明
- system.map 详解
- chkdsk修复磁盘命令详解
- 【2013微软校招面试题】设计一个栈,当栈满时,新入栈的元素循环回第一个元素的位置将其覆盖
- DM8168的互连与内存映射
- linux下挂载mtp设备(nexus7)
- 自己写的简易分页类
- MyEclipse 下替换默认的jar包
- 跨站域iframe自适应高度
- 给儿子制定的学习、活动计划(2012.12.27-2015.02.23)
- 奇数因子
- 网页制作中的一些工具代码