棧和列表面試題2 菜鳥學習日記

2021-08-14 03:15:16 字數 1340 閱讀 6437

開篇接說明,接著上次沒有寫完的題接著寫

如:入棧的序列(1,2,3,4,5),出棧序列為(4,5,3,2,1)是合法序列,入棧的序列(1,2,3,4,5),出棧序列為(1,5,3,2,4)是不合法序列

出棧(4,5,3,2,1),怎麼出的1,2,3,4入棧,4出棧,入棧5,5出棧,然後3,2,1出棧,這種情況也是合法的,不是只有(5,4,3,2,1)才合法。

這個問題要借助乙個臨時棧來完成

####遍歷將in裡的數入棧tmp,每入棧乙個數,要檢查,當入棧的數與out裡的數相等時,就pop,並將out++,核對下乙個數

bool judgelegal(vector

in,vector

out)

//2、長度一樣,遍歷比較

//借助乙個臨時棧

//從頭走

void stack1_push(const t&x)

//從尾走

void stack2_push(const t&x)

size_t stack1_size()

size_t stack2_size()

const t& sta1_top()

const t& sta2_top()

void sta1_pop()

void sta2_pop()

protected:

void

checkcapacity()

//滿了,擴容

else

/**/

//犯的錯:for迴圈的條件,在{}內改變造成錯誤,應在{}重新設臨時變數

_a = new_a;

sta2_index = sta2_index + (newcapacity - _capacity);

_capacity = newcapacity;}}

private:

t* _a;

size_t _capacity;//容量

size_t sta1_index;//sta1下標

size_t sta2_index;//sta2下標

};

棧和佇列面試題1 菜鳥學習日記

開篇點題,今天做了幾道棧和佇列的題,在此,記錄分享 來分析一下,思路1 我們可以底層用兩個棧來實現 先建個類,寫個框架,實現3個介面 class minst void pop int min protected stack st stack minst 然後我們再來分析一下如何寫,分析一下過程 雖然...

鏈表面試題2

有關單鏈表的面試題2 複雜鍊錶的複製 複雜鍊錶的複製 typedef struct complexnodecomplexnode complexnode createcomplexnode linknodetype value size t diff complexnode src complexn...

鏈表面試題2

2 反轉鍊錶 定義乙個函式,輸入乙個鍊錶的頭節點,反轉該鍊錶並輸出反轉後鍊錶的頭節點。示例 輸入 1 2 3 4 5 null 輸出 5 4 3 2 1 null class solution cur.next prev prev cur cur curnext return newhead 反轉鍊...