queue for max elem, pop, push
queue for max elem, pop, push
个人信息:就读于燕大本科软件project专业 眼下大三;
本人博客:google搜索“cqs_2012”就可以;
个人爱好:酷爱数据结构和算法,希望将来从事算法工作为人民作出自己的贡献;
博客内容:queue for max elem, pop, push;
博客时间:2014-4-28;
编程语言:C++ ;
编程坏境:Windows 7 专业版 x64;
编程工具:vs2008 32位编译器;
制图工具:office 2010 ppt;
硬件信息:7G-3 笔记本;
my words
Don't let shorts beat you, because it doesn't worth.
problem
make a queue for max elem, pop and push.(problem from beauty from programming)
require fast for getting max elem
my solution
two stacks can make true a queue.
sub-problem
getting max elem for the stack is so easy with dp.
my solution for my stack with max elem follows
name of type for elem is int
class Stack_mine
{
// assume: the data length is not so long, its length <= the max number of int
int * data ;
int length;
int * table; public: // constructor function
Stack_mine()
{
length = 0;
data = new int[LENGTH];
table = new int[LENGTH];
} // function: pop
int _pop()
{
if( ! _empty() )
{
length--;
return data[length];
}
else
{
cout<<"pop error"<<endl;
return -1;
}
} // function: return length
int _length( )
{
return length;
} // function: push
void _push(int a)
{
int * p1,*p2;
if(length >= LENGTH)
{
p1 = (int *)realloc(data,LONGLENGTH * sizeof(int));
p2 = (int *)realloc(table,LONGLENGTH * sizeof(int));
data = p1;
table = p2;
}
data[length] = a;
if( length == 0 || data[ table[length-1] ] < a )
table[length] = length;
else table[length] = table[length-1];
length ++;
} // function: empty
bool _empty()
{
if(length>0)
return false;
else return true;
} // function: max
int _max()
{
if(! _empty())
return data[ table[ length-1 ] ];
cout<<"error: empty stack for _max"<<endl;
return -1;
}
};ok, my solution for queue max elem follows
class Queue_mine
{
Stack_mine s1;
Stack_mine s2;
public:
Queue_mine(){}; // function: push
void _push(int a)
{
s1._push(a);
}; // function: pop
int _pop()
{
if(s2._empty())
{
while(!s1._empty())
{
s2._push(s1._pop());
}
}
return s2._pop();
} // function: length
int _length()
{
return s1._length() + s2._length();
} bool _empty()
{
if( s1._empty() && s2._empty() )
{
return true ;
}
else return false ;
} int _max()
{
if(! s1._empty() && ! s2._empty())
return ( s1._max() > s2._max() ? s1._max() : s2._max() );
else if( ! s1._empty() && s2._empty())
return s1._max();
else if( s1._empty() && ! s2._empty() )
return s2._max();
else {
cout<<"empty for queue"<<endl;
return -1;
}
} };
queue for max elem, pop, push的更多相关文章
- 小tip:关于typeof,instanceof,toString(),valueOf(),toLocaleString(),join(),reverse(),sort(),pop(),push(),shift(),unshift()
typeof:用于检测一个变量是否是基本数据类型.instanceof用于检测某引用对象是什么类型的对象. var s = "Nicho"; var b = true; var n ...
- js 数组的pop(),push(),shift(),unshift()方法小结
关于数组的一些操作方法小结: pop(),push(),shift(),unshift()四个方法都可改变数组的内容以及长度: 1.pop() :删除数组的最后一个元素,并返回被删除的这个元素的值: ...
- JS pop push unshift shift的作用与区别
白话JS中数组方法pop push unshift shift的作用与区别,通过本文,你大概能知道这四种数组方法的基本使用与大致区别. 首先,这四种方法会直接修改数组,请先记住这一点. 我们先把pop ...
- 自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)
基本思想: // 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站 // 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存 static c ...
- JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()
一.Array 1.some()和every() some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true. every()是对数组中的每一项运行给定函数,如果该函数对 ...
- mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet
mongo $inc 可以对集合里面的某些值是数字的增减.看代码 $set 可以进行修改,并且不存在的时候默认添加. 同时还能该变数据的类型. 还可以该变内嵌元素的值 用.调用 $unset 删除 ...
- js array filter pop push shift unshift方法
JavaScript Array filter() 方法 JavaScript Array 对象 实例 返回数组 ages 中所有元素都大于 18 的元素: var ages = [32, 33, ...
- <h2>js数组操作大全(pop,push,unshift,splice,shift方法)</h2>
---恢复内容开始--- shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a ...
- 堆栈 pop push
1.什么是堆栈 1.1堆栈 堆栈可以看作程序的心脏 所有重要的数据都会在这个里面体现(比如运算一道算术题,虽然还没算出最终答案,但是你在算出最终结果前的一些过程值可以放进堆栈) 堆栈这块内存比较特殊, ...
随机推荐
- javascript比较两个时间大小
//var yourtime=document.getElementById('begin_time').value; var yourtime='2010-12-10 11:12'; yourtim ...
- .a 库文件信息查看
在Linux 下经常需要链接一些 *.a的库文件,那怎么查看这些*.a 中包 含哪些文件.函数.变量: 1. 查看文件:ar -t *.a 2. 查看函数.变量:nm *.a
- 安卓源码下载 windows
git clone https://android.googlesource.com/name Name Descriptionaccessories/manifest device/asus/deb ...
- Python验证码识别处理实例
一.准备工作与代码实例 1.PIL.pytesser.tesseract (1)安装PIL:下载地址:http://www.pythonware.com/products/pil/(CSDN下载) 下 ...
- Logon database Tiger引起DataGuard不同步问题
当DataGuard升级CPU后.发现主备库不能同步了,日志报错,所以在主库的运行的升级的后脚本"@catbundle.sql cpu apply"不能同步到备库 现象: brok ...
- 【python】下载网络文件到本地
# 下载网络图片文件到本地 import urllib.request rsp=urllib.request.urlopen("http://n.sinaimg.cn/ent/transfo ...
- Was liberty资料总结
WebSphere Application Server Liberty Profile Guide for Developers: http://www.redbooks.ibm.com/redbo ...
- (剑指Offer)面试题42:左旋转字符串
题目: 字符串的左旋转操作是把字符串前面的若干字符转移到字符串的后面.请定义一个函数实现字符串左旋转操作的功能, 比如:输入字符串"abcdefg"和数字2,该函数将返回左旋转2位 ...
- 手机网站调试神器之chrome控制台
现在真是一个信息化的时代,每个人手里都拿着一款智能机,上班下班走路坐车之余都会玩玩手机,上上网.于是作为广大网站媒体来说,争抢手机市场无疑是刻不容缓.对于我们Web前端工程师来说,了解并掌握手机编程的 ...
- Jquery重新学习之五[操作JSON数据]
Jquery操作Json格式的数据在我们平时的项目中也经常运用:最近看Jquery权威指南中就有一章节是对这方面的整理总结:最后通过一个Asp.net结合一般处理程序ashx的实例,基本上能满足项目中 ...