Jinou možností jak dosáhnout automatického přizpůsobování velikosti zásobníku je jeho reprezentace vázaným seznamem položek nesoucích jednotlivé hodnoty. Vázaný seznam je tvořen položkami obsahujícími kromě samotné datové hodnoty také odkaz na následující prvek seznamu. Každá položka bude mít následující definici:
class StackElem { Object data; // hodnota StackElem last; // reference na předcházející prvek StackElem(Object data, StackElem last) { this.data = data; this.last = last; } }
Třída LinkedStack reprezentující zásobník pak obsahuje pouze referenci na naposledy vložený prvek na zásobníku - viz Obr. 3.4. V metodách pop() a top() opět kontrolujeme, zda nepracujeme s prázdným zásobníkem.
public class LinkedStack implements Stack { public void push(Object obj) { _top = new StackElem(obj, _top); } public Object pop() { assert _top != null : "Zasobnik je prazdny"; Object topObj = _top.data; _top = _top.last; return topObj; } public Object top() { assert _top != null : "Zasobnik je prazdny"; return _top.data; } public boolean empty() { return _top == null; } protected StackElem _top = null; }