[ThinkingDog]是一个积极向上、乐观、热心的人。
沉思的狗の博客
[ThinkingDog]欢迎您的光临,请多多指教!
微软等数据结构+算法面试100题_全部出炉_02
/**/
/*
*******************************************************************
purpose:
设计包含min函数的栈。
定义栈的数据结构,要求添加一个min函数,能够得到栈的最小元素。
要求函数min、push以及pop的时间复杂度都是O(1)。
********************************************************************
*/
#include
<
vector
>
using
namespace
std;
template
<
class
T
>
class
stack
{
private
:
T
*
elements;
int
count, top;
int
*
minPos;
public
:
stack(
int
n)
{
top
=
0
;
count
=
n;
minPos
=
new
int
[count];
elements
=
new
T[count];
if
(elements
==
NULL
||
minPos
==
NULL)
{
count
=
0
;
cout
<<
"
no more memory.
"
<<
endl;
}
}
void
push(T element)
{
if
(top
>=
count)
{
cout
<<
"
stack is full.
"
<<
endl;
}
else
{
if
(top
<=
0
||
element
<
elements[top
-
1
])
{
minPos[top]
=
top;
}
else
{
minPos[top]
=
minPos[top
-
1
];
}
elements[top
++
]
=
element;
}
}
T pop()
{
if
(top
<=
0
)
{
throw
"
no element in stack
"
;
}
else
{
return
elements[
--
top];
}
}
T min()
{
if
(top
<=
0
)
throw
"
no element in stack
"
;
return
elements[minPos[top
-
1
]];
}
bool
empty()
{
return
top
<=
0
;
}
~
stack()
{
delete[] elements;
delete[] minPos;
}
}
;
void
Test_StackWithMinFunc()
{
stack
<
int
>
st(
20
);
int
val[]
=
{
6
,
7
,
1
,
3
,
9
,
11
}
;
int
len
=
sizeof
(val)
/
sizeof
(val[
0
]);
for
(
int
i
=
0
; i
<
len; i
++
)
{
st.push(val[i]);
cout
<<
st.min()
<<
endl;
}
while
(
!
st.empty())
{
cout
<<
st.min()
<<
endl;
st.pop();
}
}
发表于 2011-05-26 14:20
沉思的狗
阅读(255)
评论(0)
编辑
收藏
新用户注册
刷新评论列表
只有注册用户
登录
后才能发表评论。
网站导航:
博客园
IT新闻
Chat2DB
C++博客
博问
<
2011年5月
>
日
一
二
三
四
五
六
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
导航
BlogJava
首页
发新随笔
发新文章
联系
聚合
管理
统计
随笔: 115
文章: 1
评论: 86
引用: 0
常用链接
我的随笔
我的文章
我的评论
我的参与
最新评论
留言簿
(5)
给我留言
查看公开留言
查看私人留言
随笔档案
(115)
2015年1月 (1)
2011年5月 (12)
2011年4月 (2)
2010年9月 (2)
2010年8月 (4)
2009年9月 (1)
2009年6月 (1)
2009年3月 (1)
2008年6月 (1)
2008年1月 (2)
2007年7月 (2)
2007年6月 (2)
2007年5月 (4)
2007年4月 (1)
2007年1月 (1)
2006年12月 (1)
2006年11月 (2)
2006年10月 (2)
2006年9月 (3)
2006年8月 (6)
2006年7月 (1)
2006年6月 (2)
2006年5月 (10)
2006年4月 (50)
2006年3月 (1)
网址
http://blog.csdn.net/Unagain
v_JULY_v
搜索
积分与排名
积分 - 210015
排名 - 265
最新评论
1. re: 使用Policy文件来设置Java的安全策略[未登录]
ss
--啊啊
2. re: Jni中C++和Java的参数传递
老大,Long 是J啊,不是L啊,可害苦我了,赶紧改回来吧;
--cnhua5
3. re: Jni中C++和Java的参数传递
楼主,在jni里返回String和C++里获取的为什么不一样,比如在java里看到的值是57891234,在C++里显示的是5789@,这是为什么啊?
--chr
4. re: 螺旋数字与坐标
对我的项目很有帮助。
谢谢
--cs221313
5. re: Jni中C++和Java的参数传递
long的符号表写错了,作为初学者亚历山大啊
--hhhhhh
阅读排行榜
1. Jni中C++和Java的参数传递 (63455)
2. 本地计算机上的 MSSQLSERVER 服务启动后又停止了。一些服务自动停止,如果它们没有什么可做的,例如“性能日志和警报”服务。[用批处理解决](22455)
3. 使用Policy文件来设置Java的安全策略(10482)
4. 一个简单的十六进制计算器(出自Win程序设计)(8739)
5. VC++6.0 全部默认快捷键(6198)
评论排行榜
1. Upload Server (HTTP 上传服务JAVA程序) 速度极快(11)
2. Jni中C++和Java的参数传递 (10)
3. 垃圾软件反删除批处理文件 (7)
4. 刚写的八皇后问题 - 递归 (随便你定义几个皇后了)JAVA(4)
5. 火车运煤问题(4)
[ThinkingDog]是一个积极向上、乐观、热心的人。