• Jueves 25 de Abril de 2024, 05:39

Autor Tema:  Listas en c++  (Leído 2614 veces)

JZtban

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Listas en c++
« en: Miércoles 15 de Mayo de 2013, 15:25 »
0
Bueno lo que pasa es que tengo un codigo de listas en c++ y no se como podria añadir 2 procesos mas que son eliminar un nodo de la lista y buscar si existe un elemento en la lista
por ahora el codigo solo crea nodos, los llena, muestra sus valores y realiza el promedio de todos los valores de la lista

Código: C++
  1. #include<iostream> //librerias
  2. #include<stdlib.h>
  3.  
  4. using namespace std;
  5.  
  6. struct nodo{ //definir la estructura del nodo
  7.        int dato;
  8.        struct nodo *siguiente;
  9. };
  10.  
  11. main()
  12. {
  13.       struct nodo *cabeza;
  14.       struct nodo *nuevo;
  15.       struct nodo *aux;
  16.       cabeza=NULL;
  17.       int valor; //el valor que se va a almacenar
  18.       int recorrer=0; //
  19.       int total_Nodos; //cantidad de nodos que deseamos crear
  20.       int cont=0;
  21.       float acum=0, prom;
  22.      
  23.       cout<<"\n\n\n\t\t'''Programa Para ingresar Lista'''";
  24.       cout<<"\n\n\n\t\tDigite la cantidad de Nodos de la Lista: ";
  25.       cin>>total_Nodos; //captura la cantidad de nodo aque desea ingresar en la lista
  26.      
  27.       for(int x=1; x<=total_Nodos; x++)
  28.       {
  29.               nuevo=(struct nodo*)malloc(sizeof(struct nodo)); //instruccion que indica a la memoria la reserva de espacio en memoria para la creacion de nodos
  30.               if(nuevo!=NULL) //pregunta si el nodo si se creo en memoria
  31.               {
  32.                        nuevo->siguiente=cabeza; //
  33.                        cout<<"\n\tDigite el dato #"<<x<<": ";
  34.                        cin>>valor; //lee el valor que ingresaron
  35.                        nuevo->dato=valor; //se asigna el valor al nodo en su campo dato
  36.                        cabeza=nuevo; //la cabeza apunta al nuevo nodo
  37.                        acum=acum+valor;
  38.                        cont=cont+1;
  39.               }
  40.               prom=acum/cont;
  41.       }
  42.      
  43.                                                
  44.       cout<<"\nDesea ver los datos de la Lista SI(1)/NO(0)";
  45.       cin>>total_Nodos; //reutilizacion de la variables para visualizar los nodos
  46.      
  47.       if(total_Nodos ==1) //opcion1
  48.       {
  49.                      system("cls");
  50.                      while(nuevo!=NULL) //
  51.                      {
  52.                                        recorrer++; //funciona como contador para re
  53.                                        cout<<"\n\tEl dato del nodo" <<recorrer<<"->"<<nuevo->dato;
  54.                                        nuevo=nuevo->siguiente; //pasa al nodo siguiente
  55.                      }
  56.                      cout<<"\n\n\tEl Promedio de los valores de la lista es "<<prom<<"\n";
  57.       }
  58.       else
  59.       {
  60.           system("cls");
  61.           cout<<"\n\n\n\t\t'Gracias por usar el programa'";
  62.      
  63.       }
  64.       system("pause");
  65. }



Espero puedan ayudarme, Muchas Gracias Saludos!

ProfesorX

  • Moderador
  • ******
  • Mensajes: 796
  • Nacionalidad: mx
    • Ver Perfil
Re:Listas en c++
« Respuesta #1 en: Miércoles 15 de Mayo de 2013, 19:14 »
0
Google es nuestro amigo:

una simple busqueda de lo siguiente:

https://www.google.com.mx/search?q=buscar+nodo+lista+enlazada

Y encontraras muchas paginas sobre el tema.

Saludos :)

« última modificación: Miércoles 15 de Mayo de 2013, 19:16 por ProfesorX »

NOTA:
==================================================================
Este foro es para ayudar, aprender, compartir... usenlo para eso,
NO SE RESUELVEN DUDAS POR MENSAJE PRIVADO Y MENOS POR CORREO
==================================================================

capsulasinformaticas

  • Nuevo Miembro
  • *
  • Mensajes: 2
  • Nacionalidad: 00
    • Ver Perfil
Re:Listas en c++
« Respuesta #2 en: Jueves 16 de Mayo de 2013, 08:00 »
0
Te ayudare con el de buscar, primero que nada recuerda que el puntero cabeza apunta al primer nodo, si perdemos esa direccion (si modificamos cabeza) no podremos acceder mas a la lista (a menos que guardemos esa direccion en otra variable), entonces como funcion seria pasando el puntero por valor y no por referencia, y segundo, por lo que te entendi necesitas una funcion que vea si es que se encuentra un elemento en la lista, entonces retornaria un tipo int con 1 o 0, 1 si esta el elemento y 0 si no esta.

Código: C++
  1. int buscar_elem(struct nodo *p, int valor) {
  2.         while (p) {
  3.                 if (valor == p->dato)
  4.                         return 1;
  5.                 p = p->sig;
  6.         }
  7.                        
  8.         return 0;
  9. }  
« última modificación: Jueves 16 de Mayo de 2013, 08:15 por capsulasinformaticas »