template <typename Object> // copy from stack ls
void LinkedStack<Object>::copyFrom(const LinkedStack& ls) {
tp = NULL;
NodePtr p = ls.tp; // p is current node in ls
NodePtr prev = NULL;
while (p != NULL) {
NodePtr v = new Node(p->element, NULL); // create copy of p
if (tp == NULL) tp = v; // if first node
else prev->next = v; // else link after prev
prev = v;
p = p->next;
}
sz = ls.sz;
}