棧和佇列面試題

2021-07-05 01:24:26 字數 577 閱讀 7043

遞迴反轉乙個棧

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.top();

s.pop();

if(tmp1>tmp2)

else

}

輸入兩個整數序列。其中乙個序列表示棧的push順序,判斷另乙個序列有沒有可能是對應的pop順序。為了簡單起見,我們假設push序列的任意兩個整數都是不相等的。

bool judge(vector

a,vector

b)}

return s.empty();

}

棧和佇列面試題

1.使用兩個棧,實現乙個佇列。棧 先進後出,且只能從棧頂pop出資料。佇列 先進先出,對頭pop資料,隊尾push資料。如下 include template class myqueue void pop else if stack2.empty private stack stack1 stack...

棧和佇列面試題

採用順序棧實現棧基本操作 採用鏈式佇列實現佇列基本操作 define maxsize100 typedef int sdatatype typedef struct stack stack typedef struct minstack minstack void stackinit stack s...

棧和佇列面試題總結

1.在o 1 時間內實現棧的push pop min操作 分析 push和pop操作都很好做到,但是min操作就沒這麼容易了,首先想到的肯定是設定乙個flag在每次push的時候紀錄下最小值,但是考慮一下如果pop的時候正好pop掉了最小值怎麼辦呢?解決 使用兩個stack,乙個存放資料,另乙個存放...