在這個題目中要求要返回乙個棧裡面的最小值。有兩種方法:
1). 用兩個棧,乙個棧存入棧的資料,另乙個棧存對應的最小值,如果入棧的順序為5,8,1,3,4,則存最小值的那個棧存入的資料應該為5,5,1,1,1。
2). 與上邊一樣,用兩個棧,乙個放資料,另乙個放最小值,最小值由結構體組成有兩部分乙個是資料元素data,乙個是記錄它對應的次數。但是與上邊不同的是,在最小值的那個棧裡面不會放重複的最小值如果入棧的順序為5,8,1,3,4,則存最小值的那個棧存入的資料應該為5(2),1(3),在每一次出棧時都會比較最小值的次數和對應棧裡面的資料是否對應。
// min stack返回棧的最小值
typedef int mstdatatype;
typedef struct minstack
minstack;
void minstackinit(minstack* pms);//初始化
void minstackdestory(minstack* pms);//銷毀
void minstackpush(minstack* pms, mstdatatype x);//入棧
void minstackpop(minstack* pms);//出棧
mstdatatype minstackmin(minstack* pms);//獲取站的最小值
// min stack返回棧的最小值
void minstackinit(minstack* pms)
void minstackdestory(minstack* pms)
void minstackpush(minstack* pms, mstdatatype x)
}void minstackpop(minstack* pms)
stackpop(&pms->_st);
}mstdatatype minstackmin(minstack* pms)
還沒寫完。 資料結構 棧和佇列及其面試題
1.利用順序表實現棧 函式介面 typedef int sdatatype typedef struct stack stack 初始化 void stackinit stack pstack 壓棧 void stackpush stack pstack,sdatatype data 出棧 void...
棧和佇列面試題
遞迴反轉乙個棧 void reverse stack s reverse s int tmp2 s.top s.pop reverse s s.push tmp1 reverse s s.push tmp2 遞迴排序乙個棧 void sort stack s sort s int tmp2 s.to...
棧和佇列面試題
1.使用兩個棧,實現乙個佇列。棧 先進後出,且只能從棧頂pop出資料。佇列 先進先出,對頭pop資料,隊尾push資料。如下 include template class myqueue void pop else if stack2.empty private stack stack1 stack...