Programación General > C/C++

 Listas en c++

(1/1)

JZtban:
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++ ---#include<iostream> //librerias#include<stdlib.h> using namespace std; struct nodo{ //definir la estructura del nodo       int dato;       struct nodo *siguiente;}; main(){      struct nodo *cabeza;      struct nodo *nuevo;      struct nodo *aux;      cabeza=NULL;      int valor; //el valor que se va a almacenar      int recorrer=0; //      int total_Nodos; //cantidad de nodos que deseamos crear      int cont=0;      float acum=0, prom;            cout<<"\n\n\n\t\t'''Programa Para ingresar Lista'''";      cout<<"\n\n\n\t\tDigite la cantidad de Nodos de la Lista: ";      cin>>total_Nodos; //captura la cantidad de nodo aque desea ingresar en la lista            for(int x=1; x<=total_Nodos; x++)      {              nuevo=(struct nodo*)malloc(sizeof(struct nodo)); //instruccion que indica a la memoria la reserva de espacio en memoria para la creacion de nodos              if(nuevo!=NULL) //pregunta si el nodo si se creo en memoria              {                       nuevo->siguiente=cabeza; //                       cout<<"\n\tDigite el dato #"<<x<<": ";                       cin>>valor; //lee el valor que ingresaron                       nuevo->dato=valor; //se asigna el valor al nodo en su campo dato                       cabeza=nuevo; //la cabeza apunta al nuevo nodo                       acum=acum+valor;                       cont=cont+1;              }              prom=acum/cont;      }                                                           cout<<"\nDesea ver los datos de la Lista SI(1)/NO(0)";      cin>>total_Nodos; //reutilizacion de la variables para visualizar los nodos            if(total_Nodos ==1) //opcion1      {                     system("cls");                     while(nuevo!=NULL) //                     {                                       recorrer++; //funciona como contador para re                                       cout<<"\n\tEl dato del nodo" <<recorrer<<"->"<<nuevo->dato;                                       nuevo=nuevo->siguiente; //pasa al nodo siguiente                     }                     cout<<"\n\n\tEl Promedio de los valores de la lista es "<<prom<<"\n";      }      else      {          system("cls");          cout<<"\n\n\n\t\t'Gracias por usar el programa'";            }      system("pause");}


Espero puedan ayudarme, Muchas Gracias Saludos!

ProfesorX:
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 :)

capsulasinformaticas:
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++ ---int buscar_elem(struct nodo *p, int valor) {        while (p) {                if (valor == p->dato)                        return 1;                p = p->sig;        }                                return 0;}  

Navegación

[0] Índice de Mensajes

Ir a la versión completa