實現乙個具有GetMin功能的棧

2021-07-11 06:07:14 字數 1086 閱讀 3932

實現乙個棧,要求實現push(出棧)、pop(入棧)、min(返回最小值的操作)的時間複雜度為o(1)

(1)建立兩個棧,乙個為普通的容納資料的棧stackdata,乙個為stackmin的棧用來返回最小值

(2)壓入資料時,stackdata直接壓入資料newnum

`  stackmin若為空,直接壓入資料newnum。若不為空

若不為空,則則比較要壓入資料newnum與stackmin的top()的值,如果numnew<=sstackmin.top()則壓入newnum,否則壓入sstackmin.top()

(3)彈出資料時,兩個stack同時彈出資料

(4)返回最小值操作時,直接返回stackmin的top()

template//模版沒寫乙個函式都要去測試一下

class stackwithmin

;//將會自動去掉對應的建構函式和析構函式

virtual ~stackwithmin(){};

void push(const t& x);

void pop();

const t& min()const;//不是棧空間的變數,所以可以直接加引用返回,但是不能改變其的值,所以加const

t& top();

bool empty() const;

size_t size()const;

private:

stackstackdata;//資料棧,存放棧的所有元素 //使用類模板需要模板引數列表,沒有特例話的模版引數

stackstackmin;//輔助棧,存放棧中的最小元素

};

templatevoid stackwithmin::push(const t& x)

templatevoid stackwithmin::pop()

templateconst t& stackwithmin::min()const

templatet& stackwithmin::top()

templatebool stackwithmin::empty()const

設計乙個具有getMin 功能的棧

設計乙個具有getmin 功能的棧 1.push pop getmin 時間複雜度為o 1 2.設計棧時可以使用現有的棧結構 設計乙個具有getmin 功能的棧 1.pop,push,getmin 時間複雜度為o 1 2.設計的棧可以使用現有的棧結構 author nemo public class...

乙個有getMin功能的棧

前言 這是學習 程式設計師 面試指南 一書的第一篇文章,也是部落格的第一篇文章,給自己加油,從現在開始堅持記錄學習。題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小值的操作。要求 1.pop push getmin操作的時間複雜度都是o 1 2.設計的棧型別可以使用現成的棧結構...

設計乙個帶有getMin功能的棧

題目 實現乙個特殊的棧,在實現棧的基本功能的基礎上,再實現返回棧中最小元素的操作。要求 1,pop,push,getmin操作的時間複雜度都是o 1 注 1,設計的棧型別可以使用現有的棧結構。思路 可以考慮使用兩個棧來進行設計,乙個棧用來儲存當前棧中的元素,其功能和乙個正常的棧沒有區別,這個棧記為s...