顺序栈实现返回前页

 1 public class SequenceStack {
2 private String[] urls; // 数组,存储用户请求的url
3 private int top; // 栈顶指针
4 private final static int maxSize = 5; // 数组长度,暂定5
5
6 public SequenceStack() { // 初始化
7 urls = new String[maxSize];
8 top = -1;
9 }
10
11 // 最新url入栈
12 public void push(String url) {
13 if (top == maxSize - 1) { // 栈满处理
14 if (url.equals(urls[top])) {// 防止刷新,如果栈顶url与传入的url相等,即为刷新操作
15 return;
16 }
17 // 更新数组保存的url
18 String[] otherUrls = urls.clone();
19 for (int i = 0; i <= maxSize - 1; i++) {
20 if (i == top) {
21 break;
22 }
23 otherUrls[i] = urls[i + 1];//前移
24 }
25 otherUrls[top] = url;
26 urls = otherUrls;
27 } else { // 栈未满
28 top++;
29 urls[top] = url;
30 }
31 }
32
33 //栈顶元素即为前页的url
34 public String pop() {
35 if (top == -1 || top == 0) {
36 return null;
37 }
38 return urls[top];
39 }
40
41 public String[] getUrls() {
42 return urls;
43 }
44
45 public void setUrls(String[] urls) {
46 this.urls = urls;
47 }
48
49 public int getTop() {
50 return top;
51 }
52
53 public void setTop(int top) {
54 this.top = top;
55 }
56
57 public static int getMaxsize() {
58 return maxSize;
59 }
60 }

 

      最近的一个WAP版新游戏需要做一个通用返回前页,一个同事做出来了,但是用起来麻烦,还需要在链接传参,而且问题也不少。昨天花了点时间研究了一下,最后用顺序栈实现了,这个实现比原来的要好的地方就是更加通用,而且不需要在链接传参。不过有个问题还是解决不了,例如多窗口操作。

posted @ 2012-02-20 22:02  咖啡陪伴宇  Views(531)  Comments(2Edit  收藏  举报