2014-04-24 2 views
0

Я делаю стек, используя LinkedList и LinearNode класса в Java и у меня есть проблема:Stack LinkedList с начальной емкостью

........

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; 
} 
}