class Node<T>//nodul listei
{
public Node<T> next;//nodul urmator
public T data;//informatia din nod
}
class stiva<T>
{
private Node<T> head;//capul stivei (cel mai de sus)
public stiva() //creare stiva vida
{
head = null;
}
public void push(T data)//adaugare
{
Node<T> n = new Node<T>();//creez nod nou
n.data = data;//pun info data in el
n.next = head;//il leg deasupra lui head (inaintea)
head = n;//nodul nou va fi apul stivei
}
public T pop()
{
T data = head.data;//info din cap
head = head.next;//mut capul la unrmatorul nod
return data;//returnez info data
}
public T peek()
{
return head.data; //returnez informatia din cap
}
public void list()//parcurg stiva si afisez
{
Node<T> p = head;//pornesc din cap
while (p != null)
{
Console.WriteLine(p.data.ToString());//afisez info
p = p.next;//trec la nodul urmator
}
}
public int N()//number of nodes
{
Node<T> p = head;//pornesc din cap
int i = 0;
while (p != null)
{
p = p.next;//avansez
i++;//numar
}
return i;
}
}
|