[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
沉思的狗
閱讀(269)
評論(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
搜索
積分與排名
積分 - 211392
排名 - 267
最新評論
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的參數傳遞 (63560)
2.?本地計算機上的 MSSQLSERVER 服務啟動后又停止了。一些服務自動停止,如果它們沒有什么可做的,例如“性能日志和警報”服務。[用批處理解決](22463)
3.?使用Policy文件來設置Java的安全策略(10520)
4.?一個簡單的十六進制計算器(出自Win程序設計)(8750)
5.?VC++6.0 全部默認快捷鍵(6219)
評論排行榜
1.?Upload Server (HTTP 上傳服務JAVA程序) 速度極快(11)
2.?Jni中C++和Java的參數傳遞 (10)
3.?垃圾軟件反刪除批處理文件 (7)
4.?剛寫的八皇后問題 - 遞歸 (隨便你定義幾個皇后了)JAVA(4)
5.?火車運煤問題(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 沉思的狗
[ThinkingDog]是一個積極向上、樂觀、熱心的人。
主站蜘蛛池模板:
彭阳县
|
富平县
|
珲春市
|
呼图壁县
|
朔州市
|
安塞县
|
房山区
|
孝义市
|
凭祥市
|
社会
|
郑州市
|
剑川县
|
岱山县
|
星子县
|
双峰县
|
蒲江县
|
兴安县
|
都匀市
|
邓州市
|
茌平县
|
新建县
|
蒙城县
|
揭东县
|
汝州市
|
唐山市
|
宽甸
|
正安县
|
樟树市
|
凤庆县
|
阿坝县
|
孟村
|
赣州市
|
东莞市
|
谢通门县
|
武夷山市
|
丹江口市
|
永川市
|
淳安县
|
林周县
|
泸西县
|
平果县
|