0
我哈瓦一個Stack類中,我有一個節點在它宣告,我需要重寫clone()函數:重寫在Java中的clone()函數
public class Stack<T> {
public class Node<T> {
T element;
Node<T> next;
public Node(T data, Node<T> n) {
element = data;
next = n;
}
@Override
public Stack<T> clone() {
Stack<T> temp = new Stack<T>();
Node<T> n;
n = top;
if(n != null) {
temp.push(n.element);
while(n.next!=null) {
n = n.next;
temp.push(n.element);
}
}
Stack<T> temp2 = new Stack<T>();
while(!temp.isEmpty()) {
temp2.push(temp.pop());
}
return temp2;
}
我還有其他的功能,如推( )和pop(),所以你可以假設它們工作正常。
的問題是什麼即時試圖做的是要能夠創建2個不同的堆棧對象,在其中一人推一些值,然後將其克隆到2之一。
我的代碼,這是可能的,但是當我試圖推值成克隆棧,它會自動將值代入第一組了。
這是我推
public void push(T el) throws MyException {
Node<T> random = null;
Node<T> newN = new Node<T>(el, random);
if(isEmpty()) {
top=newN;
newN.next = null;
} else {
newN.next = top;
Node<T> temp;
temp = top;
top = newN;
while(temp.next!=null)
temp = temp.next;
temp.next=null;
}
}
這是我怎麼能分開這個鏈接,我的主要功能
public class Tester
{
public static void main(String []args)
{
Stack<Integer> test = new Stack<Integer>();
test.push(1);
test.push(3);
System.out.println(test.toString());
Stack<Integer> test2 = new Stack<Integer>();
test2 = test.clone();
test2.push(4);
System.out.println(test2.toString());
System.out.println(test.toString());
}
}
的代碼?
謝謝
看來你'的clone()'沒有'return'聲明。這不會編譯。 – Haozhun
顯示'push()'方法的代碼可能有助於提示答案。 –
@Haozhun很抱歉,我錯過了我的代碼的一部分......現在它完全 – beckinho