Kita tahu bahwa tumpukan adalah wadah data yang masuk pertama dan keluar terakhir. Ketika urutan masukan dari tumpukan adalah urutan yang meningkat (seperti a, b, c, d), dan operasi tumpukan diperbolehkan selama operasi push, urutan keluaran dapat memiliki banyak bentuk (seperti: d, c, b , a atau a, c, b, d, dst.). Tapi yang pasti tidak akan ada pop sequence berikut: a, d, b, c atau d, a, b, c, dst. Dengan asumsi bahwa urutan masukan adalah urutan menaik, harap tulis algoritma untuk menentukan apakah urutan pop yang diwakili oleh string masukan adalah urutan pop yang benar. Misalnya: jika urutan karakter masukan adalah dcba, nilai yang dikembalikan adalah benar; jika urutan karakter masukan adalah adbc, nilai yang dikembalikan adalah salah.
Tumpukan sederhana:
kelas publik SqStack {
ukuran int pribadi;
data Objek[] pribadi;
pribadi ke atas;
SqStack publik(){
ini(50);
ukuran = 50;
}
SqStack publik(ukuran int) {
this.ukuran = ukuran;
datas = Objek baru[ukuran];
atas = -1;
}
public void push(Data objek){
//...
}
Objek publik pop(){
//...
}
Objek publik getTop(){
//...
}
boolean publik isEmpty(){
//...
}
}
boolean statis publik isStackOutSequence(String str){
SqStack s=SqStack baru();
untuk(int i=0;i<str.panjang();i++){
for(int j=i+1;j<str.panjang();j++){
if(str.charAt(j)<str.charAt(i)){
s.push(str.charAt(j));
}
while(!s.isEmpty(){
char c=(Karakter)s.pop();
if(!s.isEmpty()&&c>(Karakter)s.pop())
kembali salah;
}
}
kembali benar;