我有一个堆栈方法,它应该返回对象的反向*副本* this
。我需要this
对象链接到that
对象。谢谢。
更新
澄清一下,创建的那个堆栈对象会推送从这个对象弹出的项目。 我希望this 对象在this 对象变空后引用该对象。我真正想要的是返回this 对象的反向副本。清除?
public LinkedStack<E> reversed()
{
LinkedStack<E> that= new LinkedStack<E>();
if(this.isEmpty()){
return this;
}
else{
while(top!=null)
{
that.push(pop());
}
}
return this;
}
全班
import java.util.NoSuchElementException;
//import java.util.Stack;
public class LinkedStack<E>{
@SuppressWarnings("hiding")
public class Node<E>{
private E info;
private Node<E> link;
public Node(E info,Node<E>link){
this.info=info;
this.link=link;
}//Node constructor
public void Setinfo(E info){this.info =info;}
public E getinfo(){return info;}
public void setLink(Node<E> newLink){this.link=newLink;}
public Node<E> getLink(){return this.link;}
}//end of node
protected Node<E> upnode;
public LinkedStack(){
upnode=null;
}
//isEmpty method
public boolean isEmpty(){
if(upnode==null){
return true;
}
else
return false;
}
//item push
public void push(E item)
{
Node<E> sth=new Node<E>(item,upnode);
sth.setLink(upnode);
upnode=sth;
}
//LinkedStack push
public void push(LinkedStack<E> s)
{
if(s.isEmpty()==true)
{
throw new NoSuchElementException();
}
else{
while(!(s.isEmpty()))
{
this.push(s.pop());
}
}
}
//peek method
public E peek()
{
if(upnode==null){
throw new NoSuchElementException();
}
else
return upnode.getinfo();
}
//pop method
public E pop()
{
if(upnode==null){
throw new NoSuchElementException();
}
else{
E item=peek();
upnode=upnode.link;
return item;
}
}
public int size(){
int ct=0;
if(this.isEmpty()==true){
throw new NoSuchElementException();
}
else{
while(this.isEmpty()==false){
ct++;
upnode=upnode.getLink();
}
}
return ct;
}
//Reverse method
public LinkedStack<E> reversed()
{
LinkedStack<E> that = new LinkedStack<E>();
if(this.isEmpty()){
return this;
}
else{
while(!this.isEmpty())
{
that.push(pop());
}
}
return this;
}
//Returns a string representation of this stack
public String toString()
{
String result="";
Node<E> current=upnode;//set the current node to upnode
while(current !=null)
{//while link isn't null
result=result+(current.getinfo()).toString()+"\n";//get info and call toString
current=current.getLink();//Get the link of the current node
}
return result;//return result
}
}//end of LinkedStack