【发布时间】:2013-10-07 01:27:18
【问题描述】:
我有一个堆栈方法应该返回 this 的 reversed *副本*目的。
我需要 this 对象链接到 that 对象。谢谢。
更新
为了澄清, 创建的 that 堆栈对象推送从 this 对象弹出的项目。 我希望 this object 在 this object 变空后引用 that object。我真正想要的是返回 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
【问题讨论】:
-
问题是什么?
-
“我需要这个链接到那个,这个堆栈的反向副本。” - 这句话对我来说毫无意义。
-
这个问题的措辞让我想起了 Nuthin' 的歌词,而是一首 'G' Thang(经典的美国说唱歌曲)。无论如何,目标是创建一个能够返回自身反向版本的自定义堆栈吗?
-
我想复制使用该类创建的对象。我希望类创建的对象引用该对象。
-
@Vidya。我不是很喜欢说唱,但是是的,目标是“创建一个能够返回自身反向版本的自定义堆栈。”
标签: java list linked-list stack reverse