問題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作為儲存,首先得判斷上...