包含min函式的棧

2021-06-28 10:58:43 字數 1118 閱讀 8902

1.問題描述

定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的函式,在該棧中呼叫min,push及pop的時間複雜度都為o(1).(來自《劍指offer》)

2.分析

我們可以使用乙個輔助棧,專門來處理題目中得到棧的最小元素的函式時間複雜度為o(1)的這個需求。 當我們壓棧時,另外乙個棧正常進行,對輔助棧的壓棧做法是這樣的 假如當前壓入的這麼元素比top元素要小,那我們壓人,如果比頂端元素大,那麼我們在把頂端元素壓入一遍,這樣就能滿足題目的要求了。

3.**

void  minpush(stack* data, stack* min, stacknode* node)

if(min->top == null || gettop(min)->data > node->data)

else

push(data, node);

}stacknode* minpop(stack* data,stack* min)

pop(min);

return pop(data);

}stacknode* getmin(stack* min)

棧的實現**

#include #include typedef struct node

stacknode;

typedef struct stack

stack;

void push(stack* s , stacknode* node)

s->size++;

node->next = s->top;

s->top = node;

}stacknode* pop(stack* s)

stacknode *pnode = s->top;

s->size--;

s->top = s->top->next;

return pnode;

}stacknode* gettop(stack* s1)

return s1->top;

}

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函式的棧

題目描述 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的min函式。借用輔助棧儲存min的大小,自定義了棧結構 private int size private int min integer.max value private stackminstack new stack priva...