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

 

 


Tema destacado: Recopilación Tutoriales y Manuales Hacking, Seguridad, Privacidad, Hardware, etc


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Ayuda con funcion insertar nodo en lista!!!
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda con funcion insertar nodo en lista!!!  (Leído 2,454 veces)
mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Ayuda con funcion insertar nodo en lista!!!
« en: 10 Octubre 2015, 13:02 pm »

Hola estoy tratando de hacer una funcion que inserte nodo en una determinada posicion dada pero no he podido; tengo algunas fallas en el codigo y no se como solucionarlo

Espero me puedan ayudar,

les dejo el codigo

Código
  1. struct nodo{
  2.    char *texto;
  3.    struct nodo *siguientelinea;
  4. };
  5. typedef struct nodo *lineas;
  6.  
  7. struct listageneral{
  8.    char *nombrearchivo;
  9.    lineas primera;
  10. };
  11. typedef struct listageneral *Archivo;
  12.  
  13. TipoRet InsertarLinea(Archivo &a,char *linea, unsigned int nroLinea){
  14.    if (a->primera == NULL)
  15.    {
  16.        lineas aux = new struct nodo;
  17.        aux->texto = linea;
  18.        aux->siguientelinea=a->primera;
  19.        a->primera=aux;
  20.    }
  21.    else if ((a->primera!=NULL)&&(nroLinea==1))
  22.    {
  23.        lineas aux1 = new struct nodo;
  24.        aux1->texto = linea;
  25.        aux1->siguientelinea=a->primera;
  26.        a->primera=aux1;
  27.    }
  28.    else if ((a->primera!=NULL)&&(nroLinea!=1))
  29.    {
  30.        Archivo p=NULL; // ver este caso
  31.  
  32.        int posicion = 2;
  33.        while (posicion<nroLinea)
  34.        {
  35.            a->primera = a->primera->siguientelinea;
  36.            posicion++;
  37.        }
  38.  
  39.        lineas aux2 = new struct nodo;
  40.        aux2->texto = linea;
  41.        aux2->siguientelinea = a->primera;
  42.        a->primera=aux2;
  43.    }
  44.    return OK;


En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con funcion insertar nodo en lista!!!
« Respuesta #1 en: 10 Octubre 2015, 13:50 pm »

El problema es...
Los errores son...


En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Ayuda con funcion insertar nodo en lista!!!
« Respuesta #2 en: 10 Octubre 2015, 14:29 pm »

Disculpa pero no te entendi, me podes ayudar con el codigo?

Muchas gracias
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con funcion insertar nodo en lista!!!
« Respuesta #3 en: 10 Octubre 2015, 18:04 pm »

Ni has dicho cuales son los errores, ni cuales son los problemas, ni qué no sabes hacer. Solo has dicho lo que tratas de hacer, y has mostrado el código.
En línea

mathias_vg

Desconectado Desconectado

Mensajes: 39


Ver Perfil
Re: Ayuda con funcion insertar nodo en lista!!!
« Respuesta #4 en: 10 Octubre 2015, 22:07 pm »

Este es mi codigo, mi problema es que cuando agrego el nodo lo agrega despues de uno del mismo valor y yo lo nececito agregar antes,

Espero me puedan ayudar!

Código
  1. struct nodo{
  2.    char *texto;
  3.    struct nodo *siguientelinea;
  4. };
  5. typedef struct nodo *lineas;
  6.  
  7. struct listageneral{
  8.    char *nombrearchivo;
  9.    lineas primera;
  10. };
  11. typedef struct listageneral *Archivo;
  12.  
  13. TipoRet InsertarLinea(Archivo &a,,char *linea, unsigned int nroLinea){
  14.    if (a->primera==NULL)
  15.    {
  16.        lineas aux = new struct nodo;
  17.        aux->texto = linea;
  18.        aux->siguientelinea=a->primera;
  19.        a->primera=aux;
  20.    }
  21.    else
  22.    {
  23.        lineas nuevo_nodo = new struct nodo;
  24.        nuevo_nodo->texto = linea;
  25.        nuevo_nodo->siguientelinea;
  26.        nodo*primero = a->primera;
  27.        nodo*ant = NULL;
  28.        nodo*auxiliar = a->primera;
  29.        int posicion = 1;
  30.        while ((auxiliar!=NULL) && (posicion<=nroLinea))
  31.        {
  32.            ant = auxiliar;
  33.            a->primera = a->primera->siguientelinea;
  34.            auxiliar = a->primera;
  35.            posicion++;
  36.        }
  37.        ant->siguientelinea=nuevo_nodo;
  38.        nuevo_nodo->siguientelinea=auxiliar;
  39.        a->primera=primero;
  40.  
  41.    }
En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Ayuda con funcion insertar nodo en lista!!!
« Respuesta #5 en: 10 Octubre 2015, 22:24 pm »

Código
  1. while ((auxiliar!=NULL) && (posicion<=nroLinea))
  2.        {
  3.            ant = auxiliar;
  4.            a->primera = a->primera->siguientelinea;
  5.            auxiliar = a->primera;
  6.            posicion++;
  7.        }
  8.        ant->siguientelinea=nuevo_nodo;
  9.        nuevo_nodo->siguientelinea=auxiliar;
  10.        a->primera=primero;

En vez de poner posicion<=nroLinea, pon posicion<nroLinea.
Luego, tendrías que comprobar que ant no sea NULL. Si no es NULL, le asignas el nuevo nodo. Sino, le asignas el nuevo nodo a la lista.

En este tipo de algoritmos, lo mejor es que, si no lo lograste a la primera, lo borres y lo trates de hacer de nuevo. Pero no te pongas a escribir sin tener planteada la totalidad del algoritmo, y con totalidad me refiero a todas sus posibilidades lógicas (nroLinea==0, nroLinea>nroLineasLista, etc)

Como dato final, en la lista, te recomiendo guardar un entero indicando el número de elementos que tiene. Te ahorrará algunas operaciones (pero a la vez tendrás que actualizarlo en cada mdificación de la lista)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
ayuda en nodo de lista circular
Java
apolo85 3 4,985 Último mensaje 28 Noviembre 2009, 03:57 am
por egyware
Eliminar nodo de lista? « 1 2 »
Java
monsefoster 17 47,305 Último mensaje 10 Febrero 2010, 16:32 pm
por egyware
insertar un nodo después de otro
Programación C/C++
minette1988 3 6,213 Último mensaje 25 Mayo 2010, 15:20 pm
por Og.
problema con funcion insertar de una lista enlazada
Programación C/C++
roger13 0 1,948 Último mensaje 20 Octubre 2013, 01:44 am
por roger13
Insertar nodo en Arbol Generico
Software
EASoft 0 1,452 Último mensaje 21 Agosto 2019, 15:03 pm
por EASoft
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines