Listas doblemente enlazadas

Solo disponible en BuenasTareas
  • Páginas : 4 (765 palabras )
  • Descarga(s) : 0
  • Publicado : 7 de junio de 2011
Leer documento completo
Vista previa del texto
He aquí un pequeño algoritmo con el cual se crean y eliminan nodos en una lista doblemente enlazada en lenguage c++, espero lo disfruten y lo modifiquen si encuentran alguna inconsistencia

//LIsta doblemente enlazada.cpp: archivo de proyecto principal.

#include "stdafx.h"
#include "iostream"
using namespace System;
using namespace std;
struct nodo
{
int dato;
nodo *ant;
nodo*sig;
};
class Lde
{
private:
nodo *inicial;
nodo *buscarLista(int clave);
public:
Lde();
~Lde();
void agregar();
void eliminar();
void desplegar();
};
Lde::Lde()
{
inicial=NULL;}
Lde::~Lde()//DESTRUCTOR
{
nodo *apunt;
apunt=inicial;
while(apunt!=NULL)
{
cout<<"borro"<<endl;
inicial=apunt->sig;
delete apunt;apunt=inicial;
}
}
nodo *Lde::buscarLista(int clave)//BUSCAR LISTA
{
//DEVUELVE LA DIRECCION DEL NODO QUE ANTECEDE AL NUEVO NODO QUE VA A SER AGREGADO, O QUE VA A SER ELIMINADO
//SI LA CLAVE ES MENOR AIGUAL QUE EL DATO DEL PRIMER NODO, EL VALOR DEVUELTO ES NULL
//SI LA CLAVE ES MAYOR QUE EL DATO DEL ULTIMO NODO, DEVUELVE LA DIRRECCION DEL ULTIMO 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;
returnanterior;
}
}
void Lde::agregar()//AGREGAR
{
nodo *nuevo,*anterior;
char resp;
cout<<"Agregando datos y creando lista"<<endl;
do
{
nuevo=new nodo();
cout<<"Digitela clave del nodo a agregar"<<endl;
cin>>nuevo->dato;
if(inicial==NULL)
{
//AGREGA EL PRIMER NODO A LA LISTA
inicial=nuevo;
nuevo->ant=NULL;nuevo->sig=NULL;
}
else
{
//AGREGA A UNA LISTA QUE CONTIENE AL MENOS UN NODO
anterior=buscarLista(nuevo->dato);
if(anterior==NULL)
{
if(inicial!=NULL && nuevo->dato...
tracking img