#include<iostream>
using namespace std;
struct ListaD{
int info;
struct ListaD *sig;
struct ListaD *ant;
};
void crearCabLD(struct ListaD *&cab,int info){
cab=new ListaD;
cab->info=info;
cab->sig=cab->ant=NULL;
}
void agregarNodoLD(struct ListaD *&cab,int info){
struct ListaD *aux=cab;
while(aux->sig){
aux=aux->sig;
}
aux->sig=new ListaD;
aux->sig->ant=aux;
aux=aux->sig;
aux->info=info;
aux->sig=NULL;
}
void crearListaLD(struct ListaD *&cab){
int info=666;
while(info>0){
cout<<endl<<"Dato: ";
cin>>info;
if(info>0){
if(!cab){
crearCabLD(cab,info);
}
else{
agregarNodoLD(cab,info);
}
}
}
}
void Mostrar(struct ListaD *&cab){
struct ListaD *aux=cab;
while(aux->sig!=NULL){
cout<<aux->info<<"\t";
aux=aux->sig;
}
cout<<aux->info<<"\t\n";
while(aux!=cab){
cout<<aux->info<<"\t";
aux=aux->ant;
}
cout<<aux->info<<"\t";
}
main(){
struct ListaD *cab=NULL;
crearListaLD(cab);
Mostrar(cab);
}
martes, 20 de marzo de 2018
pseudocodigo antes y despues de nodo pedido
INSERTARANTES(P,DATO,REF){
inserta el nodo antes que otro con información X en una lista doblemente ligada
(Q,X,T =variables de tipo puntero, F ultimo nodo)
1. Hacer q:=P y BAND:=0
2. Repetir mientras (Q->inf!=REF&&BAND==0)
2.1 Si (Q->lig!=NULL)
hacer Q:=Q->LDER, T:=Q
sino BAND:=1
2.2 Fin paso 2.1
3. Fin paso 2
4. Si BAND=1
entonces "Elemento no fue encontrado"
sino Crear X, Hacer T:=Q->LIZ, X->inf:=DATO,
X->LDE:=Q
X->LIZ:=T
Q->LIZ:=X, T->LDE:=X
5. Fin paso 4.
INSERTARDESPUES(P,DATO,REF){
inserta el nodo despues que otro con información X en una lista doblemente enlazada
(Q,X,T =variables de tipo puntero, F ultimo nodo)
1. Hacer q:=P y BAND:=0
2. Repetir mientras (Q->inf!=REF&&BAND==0)
2.1 Si (Q->lig!=NULL)
hacer Q:=Q->LIZ, T:=Q
sino BAND:=1
2.2 Fin paso 2.1
3. Fin paso 2
4. Si BAND=1
entonces "Elemento no fue encontrado"
sino Crear X, Hacer T:=Q->LDE, X->inf:=DATO,
X->LIZ:=Q
X->LDE:=T
Q->LDE:=X, T->LIZ:=X
5. Fin paso 4.
Suscribirse a:
Entradas (Atom)