expo programacion
Operación de lista:
Una lista de enlace simple es una lista enlazada de nodos, donde cada nodo tiene un espacio y sirve de enlace hacia otro nodo. Cada nodo (excepto el último) se enlaza con el nodo siguiente, y el enlace del último nodo contiene NULL (no apunta a ningún valor) sirve para indicar el final de la lista.
operaciones como crear un nuevo nodo, insertar elementos,borrar, modificar, buscar, ordenar e insertar ordenado.
DEFINICION DE LA ESTRUCTURA.
typedef struct nodo
{
int valor;// Valor que se le va a ingresar al nodo
struct nodo *siguiente;//Apuntador hacia el siguiente nodo o en caso que sea el ultimo tendrá un valor NULL
}tipoNodo;//tipo de dato
RESERVAR UN ESPACIO DE MEMORIA PARA UN NODO
El siguiente código reserva un espacio de memoria para unnuevo nodo o elemento de la lista
tipoNodo *nuevo_nodo(void){
//definir
clrscr();
tipoNodo *nodo1;
nodo1=(nodo *)malloc(sizeof(nodo));//reserva espacio de memoria
if(!nodo1){
coutsiguiente=NULL;//Apunta a NULL(fin de la lista)
INSERTA VARIOS ELEMENTOS A LA LISTA
Esta función me permite ingresar varios elementos a mi lista se utiliza una variable (recorrer) de tipoNodo que me permiterecorrer y ubicar el nuevo elemento en la última posición de la lista.
void insertar(){
tipoNodo *elem;//declaro de tipoNodo elem que es el nuevo elemento de la lista
elem=nuevo_nodo();//Reserva memoria para el nuevo elemento
coutelem->valor;
tipoNodo *recorrer;
recorrer=cab;
while(recorrer->siguiente!=NULL){//Busca la ultima posición de la lista para insertar el nuevorecorrer=recorrer->siguiente;
}
recorrer->siguiente=elem;
elem->siguiente=NULL;
}
ELIMINAR UN ELEMENTO DE LA LISTA
Función que me permite eliminar cualquier elemento de mi lista para esto utilizo 2 variables de tipoNodo una que me permita guardar la posición anterior del elemento y otra la siguiente
void eliminar(){
clrscr();
int nu;
tipoNodo *anterior,*nodo;
nodo=cab;
anterior=NULL;
coutnu;while(nodo&&nodo->valorsiguiente;
}
if(!nodo||nodo->valor!=nu)
return;
else{
if(!anterior){
cab=nodo->siguiente;}
else{
anterior->siguiente=nodo->siguiente;
}
free(nodo);
}
}
ORDENAR LOS ELEMENTOS DE LA LISTA
Ordena todos los elementos de la lista de menor a mayor
int aux2;
tipoNodo *aux,*tem;
aux=nuevo_nodo();
tem=nuevo_nodo();
aux=cab;
tem=aux;
while(aux!=NULL){
tem=aux;while(tem->siguiente!=NULL){
tem=tem->siguiente;
if(aux->valor>tem->valor){
aux2=aux->valor;
aux->valor=tem->valor;
tem->valor=aux2;
}
}
aux=aux->siguiente;
Nodo:
un nodos es como una estructura que puede contener un conjunto de informacion, ejemplo
struct nodo {
int dato;
struct nodo *otronodo;
};
ahora con un ejemplo mas real
struct alumno {
string nombre;
int edad;
struct nodo*otroalumno;
};
donde:
alumno es un nodo
nombre y edad es la informacion que se puede tener del alumno
otroalumno es el puntero que nos enlaza a otro alumno si se
quiere hacer una lista
alumno1 -> alumno2 ->alumno3->...->alumnon
nombre: juan ........... oscar........... pedro......... faby
edad: 15 ............ 16 ............ 18 ........... 15
nota: -> significa el enlace a otroalumno(en la estructura aparece como otroalumno)
puntero fllecha: Tienen la misma función que en C para acceder a los tipos creados mediante estructuras, sólo que en C++ también permite acceder a los creado mediante clases.
El punto permite acceder por ejemplo a un dato de la clase desde un objeto y la flecha mediante un puntero al objeto
Si tenemos la siguiente clase:
class MiClase{
public:int dato;
};
podremos acceder a dato tanto con un objeto como con un puntero a un objeto:
MiClase obj;
MiClase *pObj=new MiClase;
obj.dato=3; //usando un objeto
pObj->dato=5; //usando un puntero al objeto
como construir una lista
para crear una lista en c++ tienes que crear una clase 'lista' y una clase 'nodo'. La clase lista estara compuesta por nodos, y los nodos estan...
Regístrate para leer el documento completo.