Está en la página 1de 9

LISTAS DOBLEMENTE LIGADAS

Elabore un método (en PSeudocódigo y programa en lenguaje C) que lea un


entero n y que construya una lista doblemente ligada, de a dígito por nodo.

CODIGO FUENTE.

Proceso LISTAS_DOBLEMENTE_LIGADAS
//Cantidad de Números que desea ordenar
Escribir "Ingrese la cantidad de números que se ordenaran";
Leer Num;
Dimension datos(Num);
i<-0;

//Se digitan los Números para la Lista


Para i<-1 Hasta Num Con Paso 1 Hacer
Escribir "Digite un Valor para la Lista"
datos(i) <- Num;
Leer datos(i);

FinPara
para i <- 1 hasta Num con paso 1 Hacer
minimo <- i;
Para j<-i+1 Hasta Num Con Paso 1 Hacer
Si datos[j] > datos[minimo] Entonces //con > ordena descendente
minimo <- j;
Fin Si
Fin Para
aux <- datos[i];
datos[i] <- datos[minimo];
datos[minimo] <- aux;
FinPara

Escribir "Esta es la Lista ordenada Descendentemente:";


Escribir "";

para i <- 1 hasta Num con paso 1 Hacer


Escribir datos[i];
FinPara

para i <- 1 hasta Num con paso 1 Hacer


minimo <- i;
Para j<-i+1 Hasta Num Con Paso 1 Hacer
Si datos[j] < datos[minimo] Entonces //con < ordena ascendente
minimo <- j;
Fin Si
Fin Para
aux <- datos[i];
datos[i] <- datos[minimo];
datos[minimo] <- aux;
FinPara

Escribir "Esta es la Lista ordenada Ascendentemente:";


Escribir "";

para i <- 1 hasta Num con paso 1 Hacer


Escribir datos[i];
FinPara

FinProceso
DIAGRAMA DE FLUJO
CODIGO FUENTE C++

//Insertar un elemento en una Lista

#include<iostream>
#include<conio.h>
#include<stdlib.h>
using namespace std;

struct Nodo{
int dato;
Nodo *siguiente;
Nodo *atras;
};

// Prototipos de Funciones
void menu();
void inLista(Nodo *&,int);
void mostLista(Nodo *);
void mostListaAtr(Nodo *);

Nodo *lista = NULL;


Nodo *ultimo = NULL;
int main(){

menu();

getch();
return 0;
}

void menu(){
int opcion,dato;
// Se crea Menu de Obciones
do{
cout<<"\t.:MENU:\n";
cout<<"1. Insertar Elementos\n";
cout<<"2. Mostrar los Elementos\n";
cout<<"3. Salir\n";
cout<<"\nOpcion: ";
cin>>opcion;

switch(opcion){
case 1: cout<<"\nDigite un Numero para la Lista: ";
cin>>dato;
inLista(lista,dato);
cout<<"\n";
system("pause");
break;
case 2: mostLista(lista);
cout<<"\n";
mostListaAtr(ultimo);
cout<<"\n";
system("pause");
break;
}
system("cls");
}while(opcion != 3);

}
void inLista(Nodo *&lista,int n){
Nodo *nuevo_nodo = new Nodo();
nuevo_nodo->dato =n;

Nodo *aux1 = lista;


Nodo *aux2;

if(lista == NULL){
lista = nuevo_nodo;
lista->siguiente = NULL;
lista->atras = NULL;
ultimo = lista;
}
else{
ultimo->siguiente = nuevo_nodo;
nuevo_nodo->siguiente = NULL;
nuevo_nodo->atras = ultimo;
ultimo = nuevo_nodo;
}

cout<<"\tElemento "<<n<<" insertado a la Lista correctamente\n";

void mostLista(Nodo *lista){


Nodo *actual = new Nodo();
actual = lista;
cout<<"\nLa Lista Doblemente Ligada es: \n\n";
while(actual != NULL){
cout<<actual->dato<<" -> ";
actual = actual->siguiente;
}
}

void mostListaAtr(Nodo *lista){


Nodo *actual = new Nodo();
actual = ultimo;

while(actual != NULL){
cout<<actual->dato<<" <- ";
actual = actual->atras;
}
}
Link del video entrega Tarea 3 Algoritmos II

También podría gustarte