【发布时间】:2015-07-04 07:15:20
【问题描述】:
我应该将元素从堆栈复制到队列。
我还没有想出一种方法来保持堆栈保持原样并仍然将其元素复制到队列中。
我最终得到了这个方法,它从堆栈中完全删除元素并将它们添加到队列中:
public void CopyFromStack(){
E t;
int c = w.size();
while(c != 0){
t = w.pop();
enqueue(t);
c--; }}
尝试将元素向后推不是一种选择,因为它会向后移动。
编辑:这是包含我的方法的类,即我的队列类:
public class Queue<E> {
protected int size;
protected Node<E> head;
protected Node<E> tail;
NodeStack<E> w = new NodeStack<E>();
NodeStack<E> w2 = new NodeStack<E>();
public Queue(){
size = 0;
head = tail = null;}
public boolean isEmpty(){
return size==0;}
public void enqueue(E elem) {
Node<E> node = new Node<E>();
node.setElement(elem);
node.setNext(null);
if (size == 0) head = node;
else tail.setNext(node);
tail = node;
size++; }
public E dequeue() {
if (size == 0) System.out.print("Queue is empty.");
E tmp = head.getElement();
head = head.getNext();
size--;
if (size == 0) tail = null;
return tmp; }
public String toString(){
String s = "";
E t;
int c = size;
while(c != 0){
t = dequeue();
s += t + " ";
enqueue(t);
c--; }
return s;}
public int FindItem(E elem){
int index=0;
int c = size;
E t;
while(c != 0){
t = dequeue();
if (t == elem)
return index;
else index++;
c--;}
System.out.print("Not found!");
return -1;}
public void CopyToStack(){
System.out.print("Elements copied to the stack are: ");
E t;
int c = size;
while(c != 0){
t = dequeue();
w.push(t);
enqueue(t);
c--;
System.out.print(w.pop()+" "); }}
public void CopyFromStack(){
E t;
int c = w.size();
while(c != 0){
t = w.pop();
enqueue(t);
c--; }}
【问题讨论】:
-
请出示您的
stack代码的其余部分,以便我们为您提供帮助。 -
您问题的第一行与其余行相矛盾。您说要将元素从队列复制到堆栈,然后您说您无法保持堆栈保持原样,并且仍将其元素复制到队列。请编辑您的问题以消除这种歧义。您想从堆栈复制到队列还是从队列复制到堆栈?
-
你在说什么 Stack 类?它是你的吗?如果是这样,为什么它不提供一种在不修改内容的情况下迭代其内容的方法?
-
你不能只获取堆栈的迭代器并遍历它们。这不会改变堆栈吗?
-
我在问题中编辑了我的错误。我希望它现在更有意义。