[ThinkingDog]是一個積極向上、樂觀、熱心的人。
沉思的狗の博客
[ThinkingDog]歡迎您的光臨,請多多指教!
微軟等數(shù)據(jù)結(jié)構(gòu)+算法面試100題_全部出爐_02
/**/
/*
*******************************************************************
purpose:
設(shè)計(jì)包含min函數(shù)的棧。
定義棧的數(shù)據(jù)結(jié)構(gòu),要求添加一個min函數(shù),能夠得到棧的最小元素。
要求函數(shù)min、push以及pop的時間復(fù)雜度都是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();
}
}
發(fā)表于 2011-05-26 14:20
沉思的狗
閱讀(269)
評論(0)
編輯
收藏
新用戶注冊
刷新評論列表
只有注冊用戶
登錄
后才能發(fā)表評論。
網(wǎng)站導(dǎo)航:
博客園
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
導(dǎo)航
BlogJava
首頁
發(fā)新隨筆
發(fā)新文章
聯(lián)系
聚合
管理
統(tǒng)計(jì)
隨筆: 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)
網(wǎng)址
http://blog.csdn.net/Unagain
v_JULY_v
搜索
積分與排名
積分 - 211396
排名 - 267
最新評論
1.?re: 使用Policy文件來設(shè)置Java的安全策略[未登錄]
ss
--啊啊
2.?re: Jni中C++和Java的參數(shù)傳遞
老大,Long 是J啊,不是L啊,可害苦我了,趕緊改回來吧;
--cnhua5
3.?re: Jni中C++和Java的參數(shù)傳遞
樓主,在jni里返回String和C++里獲取的為什么不一樣,比如在java里看到的值是57891234,在C++里顯示的是5789@,這是為什么啊?
--chr
4.?re: 螺旋數(shù)字與坐標(biāo)
對我的項(xiàng)目很有幫助。
謝謝
--cs221313
5.?re: Jni中C++和Java的參數(shù)傳遞
long的符號表寫錯了,作為初學(xué)者亞歷山大啊
--hhhhhh
閱讀排行榜
1.?Jni中C++和Java的參數(shù)傳遞 (63561)
2.?本地計(jì)算機(jī)上的 MSSQLSERVER 服務(wù)啟動后又停止了。一些服務(wù)自動停止,如果它們沒有什么可做的,例如“性能日志和警報(bào)”服務(wù)。[用批處理解決](22463)
3.?使用Policy文件來設(shè)置Java的安全策略(10520)
4.?一個簡單的十六進(jìn)制計(jì)算器(出自Win程序設(shè)計(jì))(8750)
5.?VC++6.0 全部默認(rèn)快捷鍵(6219)
評論排行榜
1.?Upload Server (HTTP 上傳服務(wù)JAVA程序) 速度極快(11)
2.?Jni中C++和Java的參數(shù)傳遞 (10)
3.?垃圾軟件反刪除批處理文件 (7)
4.?剛寫的八皇后問題 - 遞歸 (隨便你定義幾個皇后了)JAVA(4)
5.?火車運(yùn)煤問題(4)
Powered by:
博客園
模板提供:
滬江博客
Copyright ©2025 沉思的狗
[ThinkingDog]是一個積極向上、樂觀、熱心的人。
主站蜘蛛池模板:
永清县
|
乌什县
|
延安市
|
舟山市
|
壤塘县
|
富源县
|
南皮县
|
延安市
|
固始县
|
肥西县
|
晴隆县
|
翼城县
|
旬阳县
|
溧水县
|
苗栗县
|
昌邑市
|
漾濞
|
方山县
|
青岛市
|
新干县
|
砚山县
|
称多县
|
SHOW
|
中超
|
武邑县
|
深泽县
|
宁晋县
|
双辽市
|
万年县
|
鸡东县
|
土默特左旗
|
平昌县
|
云南省
|
青海省
|
北流市
|
海门市
|
镇原县
|
荣成市
|
东城区
|
崇仁县
|
南岸区
|