You are on page 1of 2

Es parte del cdigo crea un nuevo nodo de stack * insertar(stack *r ,char d) tipo estructura stack, asignndole un dato y { stack

*nuevo = new stack; apuntando su puntero sgte a NULL. nuevo->dato = d; nuevo->sgte = NULL; stack *aux = r; Aqu preguntamos si la raz apunta NULL if (aux == NULL) entonces hacemos q apunte al nuevo nodo r = nuevo; else { while (aux->sgte != NULL) Caso contrario avanzamos hasta en ultimo nodo aux = aux->sgte; ya estando en el ltimo hacemos que el puntero aux->sgte = nuevo; sgte apunte al nuevo nodo. } nuevo = aux = NULL; Eliminamos los punteros y retornamos r para delete nuevo; actualizar la raz. delete aux; return r ; } stack * sacar(stack *r) { if ( r == NULL) En esta funcin sacar Aqu { preguntamos si la raz apunta a NULL cout<<"No hay elementos en la Pila; entonces Pila vaca. return r; } int Num_Nodos = contar(r); if ( Num_Nodos == 1) Contar(r) es una funcin para contar el { nmero de nodos de la pila. En esta parte si se cout<<El dato extraido es: "<<r->dato; desea extraer el nico dato de la pila hacemos return r = NULL; q la raz apunte a NULL. } stack *aux = r; for (int i = 0; i < Num_Nodos - 2; i++) aux = aux->sgte; stack *temp = aux->sgte; cout<<"==> El dato extraido es: "<<temp->dato<<endl; aux->sgte = NULL; aux = temp = NULL; delete aux; delete temp; return r; } int esta_vacia(stack *r) { if(r == NULL) return 1; return 0; } int contar(stack *r) {

int cont = 0; stack *temp = r; while(temp != NULL) { cont++; temp = temp->sgte; } temp = NULL; delete temp; return cont; } void imprimir(stack *r) { stack *aux = r; cout<<"====== datos insertados ====== "<<endl; while (aux != NULL) { cout<<" ==> dato = "<<aux->dato<<endl; aux = aux->sgte; } aux = NULL; delete aux; }

You might also like