原題:
用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能?
思路:
假設(shè)兩個(gè)棧 A 和B,且都為空。
可以認(rèn)為棧 A 為提供入隊(duì)列的功能,棧 B 提供出隊(duì)列的功能。
入隊(duì)列: 入棧 A
出隊(duì)列:
1 如果棧B 不為空,直接彈出棧 B 的數(shù)據(jù)。
2 如果棧 B 為空,則依次彈出棧 A 的數(shù)據(jù),放入棧 B 中,再?gòu)棾鰲?B 的數(shù)據(jù)。
StatckOne.java
import java.util.ArrayList;
public class StatckOne {
private static ArrayList al;
public StatckOne() {
if (al == null)
al = new ArrayList();
}
public void put(Object o) {
al.add(o);
}
public Object top() {
int size = al.size();
if (al != null) {
if (size != 0) {
System.out.println("StatckOne");
return al.get(size - 1);
} else
System.out.println("棧中沒有對(duì)象");
} else
System.out.println("沒有初始化");
System.out.println("StatckOne");
return null;
}
}
用兩個(gè)棧實(shí)現(xiàn)一個(gè)隊(duì)列的功能?
思路:
假設(shè)兩個(gè)棧 A 和B,且都為空。
可以認(rèn)為棧 A 為提供入隊(duì)列的功能,棧 B 提供出隊(duì)列的功能。
入隊(duì)列: 入棧 A
出隊(duì)列:
1 如果棧B 不為空,直接彈出棧 B 的數(shù)據(jù)。
2 如果棧 B 為空,則依次彈出棧 A 的數(shù)據(jù),放入棧 B 中,再?gòu)棾鰲?B 的數(shù)據(jù)。
StatckOne.java
import java.util.ArrayList;
public class StatckOne {
private static ArrayList al;
public StatckOne() {
if (al == null)
al = new ArrayList();
}
public void put(Object o) {
al.add(o);
}
public Object top() {
int size = al.size();
if (al != null) {
if (size != 0) {
System.out.println("StatckOne");
return al.get(size - 1);
} else
System.out.println("棧中沒有對(duì)象");
} else
System.out.println("沒有初始化");
System.out.println("StatckOne");
return null;
}
}