2014-04-24 71 views
0

我做在Java中使用鏈表和LinearNode類堆棧和我有一個問題:棧鏈表與初始容量

........

public BoundedStackADTLinkedImpl() { 
     count = 0; 
     top = null; 
    } 

public BoundedStackADTLinkedImpl(int stackCapacity) { 
//I dont know how to do a builder using LinearNode with a initial Capacity 
} 
    public BoundedStackADTLinkedImpl(int stackCapacity, T... initialContent) { 
//Here I have the same problem. 
    count = 0; 
    top = new LinearNode<T>(); 
    for (T Vi : initialContent) { 

     push(Vi); 
    } 

..... ...

謝謝!!!

+1

請多說一點你的問題。 – demongolem

+0

請提供最小的可測試代碼。 – Braj

+2

LinkedList只有你實際使用的節點,所以初始容量沒有意義。 –

回答

0

LinkedList添加項目時分配內存。初始能力沒有意義。每個項目都有指向下一個項目的指針。

爲什麼你不使用Stack有一個ensureCapacity()方法?

enter image description here

0

你想是這樣的一個鏈表。請記住,您無法設置初始容量,因爲容量取決於列表中的元素數量,因此您不需要爲它們預先創建空間。

public class LinkedList<T> 
{ 
Node<T> topNode = null; 

public LinkedList() 
{ 
} 

public LinkedList(Node<T>... nodes) 
{ 
    for(Node<T> n : nodes) 
    { 
     push(n); 
    } 
} 

public void push(Node<T> node) 
{ 
    if (topNode == null) 
    { 
     topNode = node; 
     return; 
    } 

    Node<T> n = topNode; 
    while(n.nextNode != null) 
    { 
     n = n.nextNode; 
    } 

    n.nextNode = node; 
} 

public Node<T> pop() 
{ 
    if (topNode != null) 
    { 
     Node<T> n = topNode; 
     Node<T> p = n; 
     while(n.nextNode != null) 
     { 
      n = n.nextNode; 
      if (n.nextNode != null) 
      { 
       p = n; 
      } 
     } 

     p.nextNode = null; 
     return n; 
    } 

    return null; 
} 
} 

class Node <T> 
{ 
Node<T> nextNode = null; 
T value; 

public Node(T val) 
{ 
    value = val; 
} 
}