劍指offer 佇列和棧操作

2021-07-22 06:13:55 字數 1401 閱讀 4631

問題1、兩個棧實現佇列

class  queue

//出隊

int pop()

int temp = s2.top();

if (s2.empty())

s2.pop();

return temp;

}private:

stack

s1;

stack

s2;

};

問題2、兩個佇列實現棧

class stack

int pop()

int temp = q1.front();

q1.pop();

while (!q2.empty())

return temp;

}private:

queue

q1;

queue

q2;

};

問題3、定義棧的資料結構,請在該型別中實現乙個能夠得到棧的最小元素的min函式。在該棧中,呼叫min、push及pop的時間複雜度均為o(1)

//需要使用乙個輔助棧,用來儲存當前陣列的最小值

class stack

}

int pop()

int min()

public:

int s[20];

int s0[20];

int top=0;

int top0=0;

};

問題4、根據入棧序列,求出所有可能的出棧序列

//1.求出入棧序列的全排列

//2.判斷是否滿足出棧的要求

//加入入棧先後依次為:1,2,3,4,5

void permutation(int a,int start,int len)

}//2.判斷陣列是否是正確的出棧佇列

#include

#include

#include

#include

using

namespace

std;

bool check(int a,int len)

else}}

}return

true;

}void permutation(int a, int start, int len)

}for (int i = start; i1, len);

swap(a[i], a[start]);

}}int main();

permutation(a,0,4);

/*系統自帶的全排列公式

while(next_permutation(a,a+4))

棧和佇列 劍指offer

題目 定義棧的資料結構,請在該型別中實現乙個能夠得到棧最小元素的 min函式。class solution def init self self.elem def push self,node def pop self return self.elem.pop def top self return...

《劍指offer》 佇列和棧

一 兩個棧實現乙個佇列 題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解題思路 用乙個棧來存,另乙個棧出。需要考慮的情況如下 class solution int pop else if stack1.size 0 出隊 res stack2.top sta...

劍指offer 棧 佇列類題目

題目 用兩個棧來實現乙個佇列,完成佇列的push和pop操作。佇列中的元素為int型別。解析 題目中有兩個棧stack1和stack2,用來模擬佇列的操作,我是想把第乙個stack1作為資料儲存,第二個stack2作為中轉。佇列的特點是先進先出,1 入隊操作,因為用stack1作為儲存,首先得判斷上...