Jump to content

Programación Pilas y nodos


Recommended Posts

Hola querida comunidad, mi profesor me dió la siguiente tarea.

 

1. Crear una pila auxiliar (pila2), donde iran guardando copias de los nodos que se irán eliminando con el metodo pop (de la pila original)

2. agregar las lineas necesarias para crear las copias de los nodos eliminados y agregarlos a la pila auxiliar.

3. crear un método pop2 que permita mostrar los valores del primer nodo de la pila auxiliar y elimine dicho nodo (igual a pop pero para la pila auxiliar)

4. Agregar la opcion de pop2 al menú y agregar la llamada desde el método main.

 

Esto debo aplicarlo al siguiente código

 

 

#include<stdio.h>

#include<stdlib.h>

 

typedef struct _Pnodo{

int tope;

int valor;

struct _nodo*siguiente;

}tipoNodo;

 

int valtope=10;

typedef tipoNodo *PPila;

typedef tipoNodo *Pauxiliar;

 

PPila pila;

//declaracion de metodos

void push(PPila *pila);

int pop(PPila *pila);

void mostrar(PPila *pila);

 

//implementacion de los metodos declarados anteriormente + el main()

void push(PPila *pila)

{

if(valtope>0)

{

Pauxiliar aux;

aux=(Pauxiliar)malloc(sizeof(tipoNodo));

printf("Ingrese el valor del nodo: ");

scanf("%d",&aux->valor);

fflush(stdin);

valtope--;//disminuimos en 1

aux->tope=valtope;// aux valtope le coloca nueve

aux->siguiente=*pila;//insertamos el nodo a la pila

*pila=aux;

}else

{

printf("\nPila Llena!!!.....");

}

}

int pop(PPila *pila)//cada ves que utilicemos el pop se elimina el 1 nodo

//tiene que ingresar un valor eliminar el anterior

 

{

int aux=0;

Pauxiliar paux;

paux=*pila;

aux=paux->valor;

*pila=paux->siguiente;

free(paux);

valtope++;//valor de la kantidad de espacio ke queda disponible de la pila

return aux;

}

 

int main()

{

char opcion='\0';

do

{

printf("##################### MENU ########################\n");

printf("#### 1.-PUSH ###\n");

printf("#### 2.-POP ###\n");

printf("#### 0.-SALIR ###\n");

printf("###################################################\n");

printf("Elija una opcion: ");

scanf("%c",&opcion);

fflush(stdin);

switch(opcion)

{

case '1': push(&pila);

break;

 

case '2': pop(&pila);

 

if(pila !=NULL)

{

printf("\nel valor del nodo es %d:\n",pop (&pila));

}else

{

printf("\npila vacia\n");

}

break;

 

}

}while(opcion!='0');

}

 

 

Alguien puede ayudarme, porque nos hemos cabeceado con un compañero de curso y no nos da. Saludos gente.

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...