elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Trabajando con las ramas de git (tercera parte)


  Mostrar Mensajes
Páginas: 1 2 3 4 5 6 [7] 8 9
61  Programación / Programación C/C++ / Re: Problema al insertar en listas abiertas. en: 3 Diciembre 2010, 23:22 pm
Muchísimas gracias por la respuesta, ahora ya me quedo todo claro Azn Seguiré viendo las listas, espero que no me surjan muchas dudas mas por que la verdad es que me traen loco los malditos punteros y listas.
Un saludo y gracias de nuevo ^^.
62  Programación / Programación C/C++ / Re: Problema al insertar en listas abiertas. en: 2 Diciembre 2010, 21:05 pm
Muchas gracias por la resuesta, funciona a la perfección, ¿Podrías explicármelo por favor?
No entiendo por que tu código no da fallo de segmentación, ya que en algún momento aux sera igual a NULL, y por lo tanto aux->next no existirá, lo cual sería fallo de segmentación pero aún asi el código me funciona.
Podrías echarme una mano para comprender lo que has hecho ^^
Un saludo, y gracias de nuevo.
63  Programación / Programación C/C++ / Problema al insertar en listas abiertas. en: 2 Diciembre 2010, 12:15 pm
Saludos.
El tema de las listas en C me esta volviendo loco, a ver si podéis ayudarme en el siguiente error.
Tengo la siguiente lista abierta, el caso es que el programa me compila pero supuestamente en la lista solo esta el primer elemento, a la hora de mostrármela solo me muestra el 4.
Código:
#include <stdio.h>
#include <stdlib.h>

typedef struct listacompleta {
         int dato;
         struct listacompleta *next;
        }lista;

lista *primero;

void add_nod(int dato){
  lista *nuevo,*aux;
  nuevo = (lista *) malloc (sizeof(lista));
  nuevo->dato = dato;
  nuevo->next = NULL;       
  if(primero == NULL){
              aux = primero;
              primero = nuevo;
             } else {
                     aux = primero;
                     while(aux != NULL){
                       aux = aux->next;
                      }
                     aux = nuevo;
                    }
 
 }
 

void see_list(lista *primero){
      lista *auxiliar;
      int i;
     
      auxiliar = primero;
      while (auxiliar!=NULL) {
            printf( "%d\n",auxiliar->dato);
            auxiliar = auxiliar->next;
            i++;
      }
      if (i==0) printf( "\nLa lista está vacía!!\n" );
     
     
     }
main(){
 primero = NULL;
 add_nod(4);
 add_nod(3);
 add_nod(5);
 see_list(primero); 
}
Un saludo.
64  Programación / Programación C/C++ / Re: Problema con listas enlazadas. en: 29 Noviembre 2010, 00:50 am
Muchas gracias por todo qily, mirare mas ejemplos y preguntare las dudas que tenga en el foro ^.^.
Saludos y gracias de nuevo.
65  Programación / Programación C/C++ / Re: Problema con listas enlazadas. en: 29 Noviembre 2010, 00:07 am
Gracias qily, una cosita que no entiendo muy bien, ultimo contendría NULL, eso quiere decir que ultimo-next no existiria, ¿no? sería algo así como que ya que las dos variables de "ultimo" serian Null por lo tanto ultimo-next no estaría.
¿Algo así me quieres decir?
Por cierto, me puedes mandar algún enlace donde expliquen bien todos los fallos de segmentación, es que en la otra pagina me han quedado clara algunas cosas, pero esto de los bucles no muy claras.
Un saludo.
66  Programación / Programación C/C++ / Re: Problema con listas enlazadas. en: 28 Noviembre 2010, 22:25 pm
Muchas gracias por la respuesta ^^ el codigo que me pusiste funciono a la perfección, pero no veo donde se encuentra el error de segmentación en el que yo puse, puedes explicármelo?
Un saludo.
67  Programación / Programación C/C++ / Re: Problema con listas enlazadas. en: 28 Noviembre 2010, 21:21 pm
Muchísimas gracias por la respuesta, ahora ya lo tengo todo claro, era por la localidad de las variables en las funciones de hay que mi segundo codigo funcione y este no, ya que el segundo devolveria un puntero a la zona de declaracion que declare en la función.

Tengo una duda, tanto en el código que me has pasado como en el segundo, no puedo recorrer la lista de la siguiente forma, podrías ayudarme:

Código:
ultimo = primero;
while (ultimo->next != NULL){
     printf("%d",ultimo->data);
     ultimo = ultimo->next;
     }
Me compila y me ejecuta pero no me imprime los valores de la lista.
Un saludo y gracias de nuevo.
68  Programación / Programación C/C++ / Problema con listas enlazadas. en: 28 Noviembre 2010, 18:26 pm
Hola, tengo el siguiente problema que me trae totalmente loco con el tema de las listas enlazadas en C.

El caso es que tengo el siguiente código:

Código:
#include <stdio.h>
#include <stdlib.h>

typedef struct elementslist {
         int data;
         struct elementslist *next;
        }element;

element *first,*nodo,*nodo2;

void insertarnodo(element *nodo, int dato){
                nodo = (element*) malloc(sizeof(element));
                nodo->data = dato;
                nodo->next = NULL;
                first = nodo;
     }

main(){
 first = NULL;
 insertarnodo(nodo,5);
 printf("%d\n",nodo->data);
}

Este código me compila pero cuando lo ejecuto se me cierra y no imprime el valor de la lista.
Luego tengo este otro que si me funciona pero no se si esta mal o bien programado, el caso es que me gustaría saber por que el primero no me funciona y el segundo si, ya que al tratarse de variables globales no tengo por que retornar ningún nodo como en el segundo.

Código:
#include <stdio.h>
#include <stdlib.h>

typedef struct elementslist {
         int data;
         struct elementslist *next;
        }element;

element *first,*nodo,*nodo2;

element *insertarnodo(element *nodo, int dato){
                nodo = (element*) malloc(sizeof(element));
                nodo->data = dato;
                nodo->next = NULL;
                first = nodo;
                return nodo;
     }

main(){
 first = NULL;
 nodo = insertarnodo(nodo,5);
 printf("%d\n",nodo->data);
}

Un saludo a todos.
69  Programación / Programación C/C++ / Re: Problema con Malloc y cadenas de tamaño variable. en: 25 Noviembre 2010, 01:06 am
Muchas gracias por todas las respuestas, siento no haber podido contestar antes, he estado de exámenes y he tenido problemas con el ISP de internet y por eso no lo hice antes, ya por suerte se ha arreglado todo.

Tu idea de la variable temporal la tendré muy en cuenta, realmente si pongo un numero muy grande no creo que una cadena llegue a tener mas de ese numero y luego con realloc podría disminuirla a lo que ocupa la cadena.

Una pregunta, la idea de leer carácter por carácter es mas lento que el algoritmo propuesto por Eternal Idol de la variable temporal?

Y una ultima cosa, realmente la cadena en C no se almacena hasta que se pulsa enter, ¿no hay una forma de que cuando pulse enter todo lo que este en studin o en la entrada de datos que internamente el sistema operativo administra sacar los caracteres que han sido leídos en esa entrada y con ese tamaño darle el valor a la cadena?

Un saludo y gracias de nuevo.
70  Programación / Programación C/C++ / Re: Problema con Malloc y cadenas de tamaño variable. en: 22 Noviembre 2010, 14:29 pm
Muchas gracias Eternal Idol, en realidad no quiero decir antes, si no una vez que la ha ingresado, yo es que ahora mismo no estoy muy puesto en memoria dinamica, pero podría hacerse algo asi:

Sería coger y poner un tamaño mínimo de un byte, si la cadena no entra en ese tamaño entonces con realloc se asigna un nuevo de tamaño de los mismos byte que la cadena.

Un saludo.
Páginas: 1 2 3 4 5 6 [7] 8 9
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines