English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

import java.util.*;

public class Stack {
private Vector items;
public Stack() {
items = new Vector(10);
}

public Object push(Object item) {
items.addElement(item);
return item;
}

public synchronized Object pop() {
int len = items.size();
Object obj = null;
if (len == 0)
throw new EmptyStackException();
obj = items.elementAt(len - 1);
items.removeElementAt(len - 1);
return obj;
}

public boolean isEmpty() {
if (items.size() == 0)
return true;
else
return false;
}

public int size() {
int len = items.size();
return len;
}


public Iterator iterator() {
return new StackIterator();
}

public class StackIterator extends Stack implements Iterator {

private Stack stack = new Stack();
public StackIterator(Stack stack) {
Iterator iterator = Stack.ListIterator();
while (iterator.hasNext()) {
this.stack.push(iterator.next());
}
}

public void remove() {

}
public boolean hasNext() {
return !stack.isEmpty();
}
public Object next() {
return stack.pop();
}
}

}

2007-01-12 18:30:44 · 1 個解答 · 發問者 ? 3 in 電腦與網際網路 程式設計

請問你喔
如果用class Stack會覆蓋掉JAVA內建的嗎?

2007-01-13 12:53:23 · update #1

只多加了THIS就能跑了嗎?
為什麼要加THIS

return new StackIterator(this);

2007-01-13 12:55:23 · update #2

public class UseStack {
public static void main(String[] args) {
MyStack s = new MyStack();
StackIterator i = new StackIterator();

System.out.println(i.next());

}
}

2007-01-13 13:11:34 · update #3

請問
這樣寫有compile會過
不過沒有顯示出結果
我是哪裡錯了

2007-01-13 13:11:41 · update #4

那那那...
我該怎麼用Iterator記數STACK裡面的資料

2007-01-19 09:33:56 · update #5

1 個解答

請參考我的做法。由於原本類別 Stack 與 java.util.Stack 重覆,為了分辨清楚,我將其改為 MyStack

import java.util.*;

public class MyStack {

private Vector items;

public MyStack() {
items = new Vector(10);
}

public Object push(Object item) {
items.addElement(item);
return item;
}

public synchronized Object pop() {
int len = items.size();
Object obj = null;
if (len == 0)
throw new EmptyStackException();
obj = items.elementAt(len - 1);
items.removeElementAt(len - 1);
return obj;
}

public boolean isEmpty() {
if (items.size() == 0)
return true;
else
return false;
}

public int size() {
int len = items.size();
return len;
}

public Iterator iterator() {
return new StackIterator(this);
}
}

class StackIterator extends MyStack implements Iterator {

private MyStack stack = new MyStack();

public StackIterator(MyStack stack) {
Iterator iterator = stack.iterator();
while (iterator.hasNext()) {
this.stack.push(iterator.next());
}
}

public void remove() {

}

public boolean hasNext() {
return !stack.isEmpty();
}

public Object next() {
return stack.pop();
}
}


2007-01-18 10:06:43 補充:
如果用class Stack會覆蓋掉JAVA內建的嗎?
Ans: JVM 會優先用你寫的 Stack,除非在程式裡特別指定 java.util.Stack

只多加了THIS就能跑了嗎?為什麼要加THIS?
Ans: 這個 this 在你原本的程式碼就有了,並非我加上去的。

這樣寫有compile會過,不過沒有顯示出結果,我是哪裡錯了?
Ans: 你主要印出的是 i.next() 這一行,可是 i 所代表的 StackIterator 是空的,所以什麼都沒有,也就是印出空白。

2007-01-13 11:27:00 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers