El presente tema tiene como finalidad resolver una guía de programación estructurada en C++.
Este es el código con el que se va a trabajar.
Código C++:
Ver original
// Agrega_Clase_ListaSE.cpp: archivo de proyecto principal. #include "stdafx.h" #include "iostream" using namespace System; using namespace std; struct nodo { int dato; nodo *sig; }; class Lse { private: nodo *inicial; nodo *buscarLista(int clave); public: Lse(); ~Lse(); void agregar(); void eliminar(); void desplegarLista(); }; Lse::Lse() { inicial=NULL; } Lse::~Lse () { } void Lse::desplegarLista() { if(inicial==NULL) { cout<<"La lista esta vacia"<<endl; } else { nodo *apunt; apunt=inicial; while(apunt!=NULL) { cout<<apunt->dato<<endl; apunt=apunt->sig; } } } nodo *Lse::buscarLista(int clave) { //Devuelve la dirección del nodo que antecede al nuevo //nodo que va a ser agregado, o que va a ser eliminado. //Si la clave es menor o igual al dato del primer nodo //el valor devuelto es NULL. //Si la clave es mayor que el dato del último nodo //devuelve la dirección del último nodo. nodo *anterior; anterior=NULL; if(clave <= inicial->dato)return anterior; else { anterior=inicial; while ( ( anterior->sig!=NULL) && (clave > anterior->sig->dato) ) anterior=anterior->sig; return anterior; } } void Lse::agregar() { nodo *nuevo,*anterior; char resp; do { nuevo=new nodo(); cout<<"Entre clave del nodo a agregar"<<endl; cin>>nuevo->dato; if(inicial==NULL) { //Agrega el primer nodo a la lista inicial=nuevo; nuevo->sig=NULL; } else { //Agrega a una lista que contiene al menos un nodo anterior=buscarLista(nuevo->dato); if(anterior==NULL) { //Agrega un nodo que queda de primero //en una lista que no estaba vacia nuevo->sig=inicial; inicial=nuevo; } else { if(anterior->sig!=NULL) { //Agrega un nodo que queda entre el //primero y el ultimo nuevo->sig=anterior->sig; anterior->sig=nuevo; } else { //Agrega un nodo que queda de ultimo nuevo->sig=NULL; anterior->sig=nuevo; } } } cout<<"Desea agregar otro nodo? (s/n)"<<endl; cin>>resp; }while(resp=='s'); } void main() { Lse l; l.agregar(); l.desplegarLista(); }
Bien, acontinuación imagenes de la guía:
En Flirck:
1. http://farm3.staticflickr.com/2862/9...e64f8d0a_o.jpg
2. http://farm4.staticflickr.com/3710/9...6d0854ba_o.jpg
3. http://farm3.staticflickr.com/2819/9...8e45637c_o.jpg
Podrán encontrar la guía completa en PDF aquí: " https://mega.co.nz/#!aB1DRDiC!RWu4s1...lGa3yAev7cTsso
"
Ahora bien. Mi duda actual se refiere a la interpretación de las lineas:
Código C++:
Ver original
nodo *Lse::buscarLista(int clave) { //Devuelve la dirección del nodo que antecede al nuevo //nodo que va a ser agregado, o que va a ser eliminado. //Si la clave es menor o igual al dato del primer nodo //el valor devuelto es NULL. //Si la clave es mayor que el dato del último nodo //devuelve la dirección del último nodo. nodo *anterior; anterior=NULL; if(clave <= inicial->dato)return anterior; else { anterior=inicial; while ( ( anterior->sig!=NULL) && (clave > anterior->sig->dato) ) anterior=anterior->sig; return anterior; } }
¿Qué está haciendo el programa?, ¿Asignando el código de memoria de un nodo-dato a otro?, ¿Cómo funciona el mecanismo?, ¿Cuándo intermabio el código de memoria ( En este caso x4 -> x9) ?, ¿Qué significa el simbolo "->"?
Gracias de antemano por la ayuda.