public void push(T dato)
        {
            nodo <T> nuevo = new nodo <T>(dato);

            if (!pilaVacia())
            {
                nuevo.anterior = cima;
                cima.siguiente = nuevo;
            }
            cima = nuevo;
        }//push insertar
        public bool agregar(T dato)
        {
            nodo <T> nuevo = new nodo <T>(dato);

            if (esta_vacia())
            {
                inicio = nuevo;
            }
            else
            {
                fin.siguiente = nuevo;
            }
            fin = nuevo;
            cola++;
            return(true);
        }
 public T obtener()
 {
     if (esta_vacia())
     {
         return(default(T));
     }
     else
     {
         nodo <T> aux = inicio;
         inicio = inicio.siguiente;
         cola--;
         if (cola == 0)
         {
             fin = null;
         }
         return(aux.dato);
     }
 }
        public T pop()
        {
            T d;

            if (cima.anterior == null)
            {
                d    = cima.dato;
                cima = null;
            }
            else
            {
                d    = cima.dato;
                cima = cima.anterior;
                cima.siguiente.anterior = null;
                cima.siguiente          = null;
            }
            return(d);
        }//pop eliminar
 public Pila()
 {
     cima      = null;
     siguiente = null;
 }