C/Visual C - Ayuda con pila

 
Vista:
sin imagen de perfil

Ayuda con pila

Publicado por sea (11 intervenciones) el 10/05/2018 21:45:37
Buenas amigos, tengo un pequeño problema en este codigo, al eliminar una pila no me compila. Espero que alguien con conocimiento pueda ilustrarme con esta pequeña duda. Gracias de antemano.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
#include <stdio.h>
#include <stdlib.h>
 
typedef struct nodo{
	int dato;				// el valor del dato ingresado que es de tipo entero
	struct nodo *siguiente; //*siguiente = es el que está apuntando al puntero siguiente, el prox valor.
}pila;
typedef pila *pNodo;

typedef pila *p_pila;
pila *primero = NULL;  // se crea una pila vacia

//----------------------------------------------------------------------------------------------------------------------------------------------------
void push(pila *primero);
void pop(pila *primero, int n);
//----------------------------------------------------------------------------------------------------------------------------------------------------

int main(){
		
	push(primero);
	push(primero);
	push(primero);
	
	pop(primero);
	
	return 0;
}

void push(pila *primero){
	pNodo nuevo = (pNodo)malloc(sizeof(pila));                     //se abre un espacio (dinamico) para ingresar un nuevo nodo
	printf("Ingrese un elemento a la pila: "); scanf("%d",&nuevo->dato);
	nuevo->siguiente = primero;          // el nuevo nodo siempre apuntará al primero (stack) 
	primero = nuevo;					   // El primero será el nuevo nodo	
	printf("El elemento [%d] ha sido agreado con exito!\n\n",nuevo->dato);
}

void pop(pila *primero, int n){
	pNodo nodo; 
	if(nodo == NULL){
		printf("La pila se encuentra vacia...");
	}
	else{
		n = primero->dato; // es el dato que se eliminará
		primero = nodo;
		primero = primero->siguiente;
		printf("El elemento [%d] ha sido eliminado",n);
		free(nodo);
	}
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de gregory
Val: 73
Ha mantenido su posición en C/Visual C (en relación al último mes)
Gráfica de C/Visual C

Ayuda con pila

Publicado por gregory (24 intervenciones) el 11/05/2018 05:11:37
El error es que cuando llama a eliminar. nodo apunta a una direccion que no es NULL y que no existe, la solucion es hacer que nodo=primero;
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar