包含min函式的棧

2021-09-30 16:21:46 字數 1187 閱讀 3139

劍指offer上的第21題,之前在cracking the coding interview上做過,思路參考這裡,這次寫了測試函式,在九度oj上測試通過。

題目描述:

定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。

輸入:輸入可能包含多個測試樣例,輸入以eof結束。

對於每個測試案例,輸入的第一行為乙個整數n(1<=n<=1000000), n代表將要輸入的操作的步驟數。

接下來有n行,每行開始有乙個字母ci。

ci=』s』時,接下有乙個數字k,代表將k壓入棧。

ci=』o』時,彈出棧頂元素。

輸出:對應每個測試案例中的每個操作,

若棧不為空,輸出相應的棧中最小元素。否則,輸出null。

樣例輸入:

7s 3

s 4s 2

s 1o

os 0

樣例輸出:33

2123

0ac**:

/* 

本程式採用陣列模擬棧

*/typedef int elemtype;

#define max 100000 //棧的深度

#include#includeint top = -1;

/* 在棧頂索引指標為top時,向棧a中壓入資料data

*/bool push(int *a,elemtype data)

/* 在棧頂索引指標為top時,出棧

*/bool pop()

/* 棧頂當前索引指標為top,min陣列最大深度也為max,

返回欄目頁:

且min的有效元素數與棧a中的元素個數相同,

它的對應位置用來儲存棧a對應位置到棧底這一部分元素中的最小值

*/void minall(int *a,int *min)

} /* 返回棧頂為top時棧中元素的最小值

*/int min(int *min)

int main()

if(ci == 'o')

minall(a,min);

if(top<0)

printf("null\n");

else

printf("%d\n",min(min));

} }

return 0;

}

js 包含min函式的棧 包含min函式的棧

目標 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的 min 函式在該棧中,呼叫 min push 及 pop 的時間複雜度都是 o 1 設計思路 我們要做的是在我們每次資料入棧的時候,記錄當前資料棧中最小值,並且在pop 出棧之後依然能找到最小值 方案 如果只用乙個 min 變數來儲...

包含min函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 1 n 1000000 n代表將要輸入的操作的步驟數。接下來有n行,每行開始有乙個字母ci。ci s 時,接下有乙個數字k,代...

包含min函式的棧

1.問題描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o 1 來自 劍指offer 2.分析 我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o 1 的這個需求。當我們壓棧時,另外乙個棧正常進行,...