[C con Clase] Listas enlazadas
Diego
diegoartesanal en gmail.com
Mar Mayo 31 06:25:39 CEST 2011
Mellisa, hice este ejemplo, que realiza todo lo que necesitas menos lo de
buscar.
Está todo en un mismo archivo, de ser necesario, separas la clase ENTERO y
LISTA en otros archivos y los incluyes desde el main.
Revisalo y las dudas que tengas me consultas.
Diego.
El 25 de mayo de 2011 18:48, Melissa Santacruz <melissasantacruz en hotmail.com
> escribió:
> Hola a todos esto mas bien quiero compartir con ustedes ya que mucho
> todavia no entiendo y se que con ustedes entendere, y para que no se tomen
> mucho tiempo le especifique con colores,espero que me ayudeeen, porque me
> salen muchos errores u.u
>
> Nos pidio lo siguiente:
> 1. Escribir una funcion miembro en la clase lista, que devuelva el primer
> elemento de la lista si es que lo tiene.
> 2. Escribir una funcion miembro en la clase lista, que devuelva el numero
> de nodos de la lista enlazada.(Para obtener el numero de nodos de una lista,
> basta con recorrerla desde la cabeza de la lista y contarlos con un
> contador).
> 3. Agrega la funcion miembro Buscar() a la clase Lista, prueba y describe
>
> //Esa funcion Buscar() ya la pondre pero creo que le faltan datos para
> algun archivo.
>
> El tema es el siguiente la profesora nos dio para hacer un proyecto con 3
> archivos:
> clase Nodo.h - clase Lista.h - y con el programa principal y son los
> siguientes:
>
> PRINCIPAL:
>
> #include <iostream>
> #include <cstdlib>
> using namespace std;
>
> typedef int Dato;
>
> #include "Nodo.h"
> #include "Lista.h"
>
>
> int main(int argc, char *argv[])
> {
> Lista lista;
> lista.crearLista();
> lista.primero(); // ESTO ES PARTE DE LO QUE PIDIO QUE NO ME SALIO
> PARA EL PRIMER EJERCICIO
> lista.buscar();
>
> cout<<" el primer elemento es" << lista.primero() << endl;
>
> system("PAUSE");
> return EXIT_SUCCESS;
> }
>
> CLASE NODO.H:
>
> typedef int Dato;
> #ifndef _NODO_H
> #define _NODO_H
>
> class Nodo
> {
> protected:
> Dato dato;
> Nodo *enlace;
> public:
> Nodo (Dato t)
> {
> dato = t;
> enlace = 0;
> }
>
> Nodo (Dato p, Nodo *n)
> {
> dato = p;
> enlace = n;
> }
>
> Dato datoNodo () const
> {
> return dato;
> }
>
> Nodo *enlaceNodo () const
> {
> return enlace;
> }
>
> void ponerEnlace (Nodo *sgte)
> {
> enlace = sgte;
> }
>
> };
>
> #endif
>
> CLASE LISTA.H:
>
> typedef int Dato;
> #include "Nodo.h"
> #include <iostream>
> using namespace std;
>
> class Lista
> {
> protected:
> Nodo *primero;
>
> public:
> Lista()
> {
> primero = NULL;
> }
> void crearLista();
> Dato Lista(); //ESTO NO SE COMO SE DEBE INICIALIZAR
> void Buscar(); //ESTO SERA ASI? es el ejercicio 3
>
> };
>
> void Lista::crearLista()
> {
> int x;
> primero = 0;
> cout<< "Termina con -1" <<endl;
>
> do
> {
> cin>> x;
>
> if (x != -1)
> {
> primero = new Nodo (x, primero);
> }
> }while (x != -1);
>
> }
> Dato Lista::Primero()
> { //ESTO ES LO QUE
> NO SALE ES DEL PRIMERO
> if(primero)
> return primero->datoNodo()
> else cout<< "Error";
> }
>
> Nodo *Lista::Buscar(Dato x)
> {
> Nodo *pos = primero;
> bool enc = false;
>
> while (!enc && pos)
> if (pos->enlaceNodo();
> //ESTO PERTENECE AL EJERCICIO 3
> pos = pos->enlaceNodo();
> else enc = true;
>
> if (enc) //EQUIVALENTE A PONER RETURN pos
> return pos;
> else
> return NULL;
> }
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110530/4f42493e/attachment.html>
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: Ejemplo_Lista.cpp
Type: text/x-c++src
Size: 2367 bytes
Desc: no disponible
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110530/4f42493e/attachment.bin>
Más información sobre la lista de distribución Cconclase