2017-02-06 30 views
1

我有一個LinkedList的堆棧。在不刪除的情況下更新堆棧信息是否正確?

我想通過id更新元素的信息。 (我正在使用compareTo,沒關係)。

例如,我的籌碼

頂級>約翰,瑪麗安娜,邁克爾

我想更新安娜在Person對象的信息(年齡等)。

由於我使用LinkedList,我應該迭代列表並更新值嗎? 不正確? 因爲這個概念是一個堆棧只能訪問它的頂部。

我應該彈出另一個堆棧然後回來嗎? 我應該迭代和更新嗎?

非常感謝。

我的堆疊:

public class LittleStack<E> { 

    private SimplyLinkedList<E> elements; 

    public LittleStack() { 
     elements= new SimplyLinkedList<>(); 
    } 

    public boolean push(E obj) { 
     elements.insertAtBegin(obj); 
     return true; 
    } 

    public E pop() { 
     return elements.removeFromBegin(); 
    } 

    public E getTop() { 
     return this.elements.getInicio().getObj(); 
    }  
+4

嚴格地說,如果你暴露一個堆棧,那麼你不能迭代列表,你將不得不彈出,然後再次推。當你使用一個列表來實現你的堆棧時,當然這可以完成,但是我會說如果你需要迭代,那麼對於你的prolelem,列表可能是一個更好的選擇。 –

+0

非常感謝。我認爲在課堂內部,這是可能的。但在其他課程中,只有頂部有權訪問。 – ComplexityAlg

回答

1

如果您的問題域指定堆棧(S)的數據結構,使用第二堆棧。

在僞/代碼:

  • 創建stack2中
  • 流行元素關棧1和推到stack2中
  • 重複,直到你彈出安娜
  • 修改安娜
  • 推安娜回到棧1
  • 來自stack2的流行元素並將它們推入堆棧1
  • 重複,直到堆棧2爲空
+0

這真的是我的想法。但更新操作在Stack類中。我想我可以用兩種方法。非常感謝! – ComplexityAlg

+0

這真的是我的想法。但更新操作在Stack類中。我想我可以用兩種方法。非常感謝! – ComplexityAlg

相關問題