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的更多相关文章

  1. 小tip:关于typeof,instanceof,toString(),valueOf(),toLocaleString(),join(),reverse(),sort(),pop(),push(),shift(),unshift()

    typeof:用于检测一个变量是否是基本数据类型.instanceof用于检测某引用对象是什么类型的对象. var s = "Nicho"; var b = true; var n ...

  2. js 数组的pop(),push(),shift(),unshift()方法小结

    关于数组的一些操作方法小结: pop(),push(),shift(),unshift()四个方法都可改变数组的内容以及长度: 1.pop() :删除数组的最后一个元素,并返回被删除的这个元素的值: ...

  3. JS pop push unshift shift的作用与区别

    白话JS中数组方法pop push unshift shift的作用与区别,通过本文,你大概能知道这四种数组方法的基本使用与大致区别. 首先,这四种方法会直接修改数组,请先记住这一点. 我们先把pop ...

  4. 自定义栈类型,具有找到站内最小元素的min函数 ,且min(),pop(),push()函数的时间复杂度为O(1)

    基本思想: // 借助一个辅助栈,入栈时,若新元素比辅助栈栈顶元素小,则直接放入辅助站 // 反之,辅助站中放入次小元素(即辅助栈栈顶元素)====保证最小元素出栈时,次小元素被保存 static c ...

  5. JS中some()和every()和join()和concat()和pop(),push(),shift(),unshfit()和map()和filter()

    一.Array 1.some()和every() some()是对数组中每一项运行指定函数,如果该函数对任一项返回true,则返回true. every()是对数组中的每一项运行给定函数,如果该函数对 ...

  6. mongo 修改器 $inc/$set/$unset/$pop/$push/$pull/$addToSet

    mongo $inc 可以对集合里面的某些值是数字的增减.看代码 $set  可以进行修改,并且不存在的时候默认添加. 同时还能该变数据的类型. 还可以该变内嵌元素的值 用.调用 $unset  删除 ...

  7. js array filter pop push shift unshift方法

    JavaScript Array filter() 方法  JavaScript Array 对象 实例 返回数组 ages 中所有元素都大于 18 的元素: var ages = [32, 33,  ...

  8. <h2>js数组操作大全(pop,push,unshift,splice,shift方法)</h2>

    ---恢复内容开始--- shift:删除原数组第一项,并返回删除元素的值:如果数组为空则返回undefined var a = [1,2,3,4,5]; var b = a.shift(); //a ...

  9. 堆栈 pop push

    1.什么是堆栈 1.1堆栈 堆栈可以看作程序的心脏 所有重要的数据都会在这个里面体现(比如运算一道算术题,虽然还没算出最终答案,但是你在算出最终结果前的一些过程值可以放进堆栈) 堆栈这块内存比较特殊, ...

随机推荐

  1. Python操作dict时避免出现KeyError的几种方法

    见原文:https://www.polarxiong.com/archives/Python-%E6%93%8D%E4%BD%9Cdict%E6%97%B6%E9%81%BF%E5%85%8D%E5% ...

  2. [Todo] solr, lucence等学习

    先参考这个吧 http://www.shareditor.com/blogshow/6

  3. [置顶] JDK工具(一)–Java编译器javac

    1.概述    javac.exe: Java编译器,将Java源代码转换成字节码. 2.用法    javac <选项> <源文件> (使用过程中发现,javac <源 ...

  4. 微信-js sdk invalid signature签名错误 问题解决

    如果出现 invalid signature,首先可以确定的是你的签名算法有问题.建议:首先查看微信官方网站给出的解决方案,链接为: http://mp.weixin.qq.com/wiki/7/aa ...

  5. vue 1.x 总结

    1.Vuejs组件 vuejs构建组件使用 Vue.component('componentName',{ /*component*/ }): 这里注意一点,组件要先注册再使用,也就是说: Vue.c ...

  6. Geolocation 地理定位

    地理位置(Geolocation)是 HTML5 的重要特性之一,提供了确定用户位置的功能,借助这个特性能够开发基于位置信息的应用.今天这篇文章向大家介绍一下 HTML5 地理位置定位的基本原理及各个 ...

  7. mindmanager2018官方下载地址

      mindmanager2018官方下载地址 CreationTime--2018年6月6日09:09:56 Author:Marydon 找了很多都是假的链接地址,流氓软件,根本不能输入许可密钥, ...

  8. javascript 模块化模式总结(二)

    一.对象字面值 这种设计模式中,一个对象被描述为一组以逗号分隔的名称/值对括在大括号({})的集合.对象内部的名称可以是字符串或是标记符后跟着一个冒号":".在对象里最后一个名称/ ...

  9. Ubuntu 分区方案参考

    2011-10-25 10:09   对于初次接触的一般用户(包括双系统用户): /             5-10G(玩玩的话5G就够,长期使用的话推荐10G) /usr         5-10 ...

  10. android系统特效详解和修改方法

    安卓系统特效相关文件:  存在于:framework-res.apk   反编译后的\framework-res\res\anim文件夹内!anim文件夹下所有的文件都是特效文件原理  反编译fram ...