生活随笔
收集整理的這篇文章主要介紹了
最小栈的实现
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
????所謂最小棧, 就是當(dāng)前棧頂元素最小, 我們可以這樣做, 每次在入棧之前, 將待入棧元素與棧頂元素相比, 每次現(xiàn)將待入棧的元素先入棧, 再將帶入棧的元素和較小的元素入棧, 這樣就可以保證每次棧頂元素是最小元素. 在出棧的時候規(guī)定每次出棧兩個元素,這樣就可以保證在出棧之后棧頂元素任然是最小元素
????1. 最小棧的初始化
#include"ministack.h"void MiniStackInit(MiniStack* ministack)
{
if(ministack == NULL){
return;}SeqStackInit(&(ministack ->
stack));
}
????????????????????
????2. 入棧
void MiniStackPush(MiniStack* ministack, SeqStackType value)
{
if(ministack == NULL){
return;}SeqStackType top_value;
int ret = SeqStackGetFront(&(ministack ->
stack), &top_value);
if(ret ==
0){SeqStackPush(&(ministack ->
stack), value);SeqStackPush(&(ministack ->
stack), value);
return;}SeqStackType min = (top_value < value) ? top_value : value;SeqStackPush(&(ministack ->
stack), value);SeqStackPush(&(ministack ->
stack), min);
}
????????????????????
????3. 出棧
void MiniStackPop(MiniStack* ministack)
{
if(ministack == NULL){
return;}
if(ministack ->
stack.size ==
0){
return;}SeqStackPop(&(ministack ->
stack));SeqStackPop(&(ministack ->
stack));
}
????????????????????
總結(jié)
以上是生活随笔為你收集整理的最小栈的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。