none
Cual es mi error , C? RRS feed

  • Pregunta

  • Solo mi codigo pide numeros.. y los imprime en una lista. pero al querer borrar solo el primer nodo e imprimir de nuevo la listano lo hace
    GRACIAS A LA AYUDA DE WALTER 
    • Editado SOL15 jueves, 2 de marzo de 2017 0:32
    miércoles, 1 de marzo de 2017 23:53

Todas las respuestas

  • n abandona el bucle valiendo NULL, obviamente. Luego haces que p sea NULL. Tu lista está perdida...

    Prueba así

    #include<stdio.h>
    #include <conio.h>
    #include <stdlib.h>
    
    struct nodo {
    	int num;
    	struct nodo* siguiente;
    };
    
    
    int main() {
    	int i;
    	struct nodo* n = NULL;
    	struct nodo* p = NULL;// auxiliar
    	struct nodo* u = NULL;
        
    	for (i = 0; i < 5; i++)
    	{
    		n = (struct nodo*)malloc(sizeof(struct nodo));
    		
    		printf("inserte 5 numeros ;");
     		scanf("%d",&n->num);
    		n->siguiente = NULL;
    		
    		if (!p) p = n;
    		if (u) u->siguiente = n; // agregamos el nuevo nodo al final de la lista
    		u = n;	
    	} 
    	 
    	n = p; 
    	while (n) {
    		printf("%d ->", n->num);
    	
    		n = n->siguiente;
    	}
    	
    	printf("\n eliminando el primer nodo");
    	
    	n = p; // preservamos el puntero al nodo inicial
    	p = p-> siguiente; // hacemos que la lista comience en el segundo nodo
    	free(n); // eliminamos el nodo inicial
    
    	n = p;
    	while (n) {
    		printf("%d ->", n->num);
    	
    		n = n->siguiente;
    	}
    	
    	
    	_getch();
    	return 0;
    }

    p no es una variable auxiliar. p es la lista.



    • Editado walter_5 jueves, 2 de marzo de 2017 0:15
    jueves, 2 de marzo de 2017 0:15
  • muchas gracias :), ya al final modificandolo , me di cuenta de eso , y solo estaba equivocada en querer pasarlo al siguiente.. lo podía de otra manera . gracias
    jueves, 2 de marzo de 2017 0:25