Trenes C++
#include <stdlib.h>
// este programa permite crear una lista multienlazada de numeros
typedef struct NODO
{
char ELEM[10];
struct NODO *izq;
struct NODO *der;
}tipo;
//Define tipo de dato
typedef tipo *Pnodo;
main(){
//funciones y procedimmientos a implementar para la lista
int Es_vacia (NODO *D);
void EncolarIzq (Pnodo *D, Pnodo*I);
void ImprimirIzq(NODO *I);
//void DesencolarIzq (Pnodo *I);
void TopeDer (NODO *D);
void IMPRIMIR(NODO *I,NODO *D);
//Declaración de variables locales
//Variable usada como la instruccion GETCH
int N; //Permite conocer la cantidad de elementos a introducir en la pila
char estaciones[15]; //Permite capturar por teclado el elemento a apilar
//char ELEMI="a";//Inicializa Punteros
NODO *izquierda=NULL;
NODO *derecha=NULL;
printf("Introduzca las estaciones del metro: ");
scanf("%i",&N);
for(int i=1;i<=N;i++){
EncolarIzq(&derecha, &izquierda);
}
printf("\n Lista impresa de Izquierda a Derecha\n");
ImprimirIzq(izquierda);
printf("\n quitando la primera estacion\n");//DesencolarIzq(&izquierda);
//Verifica si esta vacia la lista
if(Es_vacia(izquierda)!=1) ImprimirIzq(izquierda);
//Imprime el tope derecho de la lista
TopeDer(derecha);
printf("\n verificando si la cola es vacia: \n");
if(Es_vacia(izquierda)==1) printf("\n La cola es Vacia \n");
else printf("\n La cola no es Vacia \n");
IMPRIMIR(izquierda,derecha);
}//fin delmain
//****************************** Acciones y Funciones
void EncolarIzq (Pnodo *D, Pnodo *I){
NODO *nuevo = (NODO*)malloc(sizeof(NODO));
printf("Introduzca las estaciones: ");
scanf("%s",nuevo->ELEM );
//=ELEM;//Reserva el espacio de memoria para un Nodo llamado NUEVO
//= E; //Ingresa dentro de la variable ELEM que existe en NUEVO un valor
if (*D==NULL){//Verifica si el puntero D apunta a NULL
nuevo->izq = *I; //El puntero IZQ dentro de NUEVO apuntara a NULL
nuevo->der = *D; //El puntero DER dentro de NUEVO apuntara a NULL
*I = nuevo; //El puntero I (izquierdo) apuntara a NUEVO
*D = nuevo; //El puntero D (derecho) apuntara a NUEVO
}
else {
NODO *AUX; //Crea un puntero auxiliar (AUX) con ladimension de NODO
AUX = *D; //Posiciona al puntero AUX en lo que apunta D
while (AUX->der != NULL){ //Verifica si el puntero DER en AUX apunta a NULL
AUX=AUX->der; //Desplaza AUX por la parte derecha de AUX
}
AUX->der = nuevo ; //El puntero DER en AUX apuntara a NUEVO
nuevo->der = NULL; //El puntero DER en el nodo NUEVO apuntara a NULLnuevo->izq = AUX; //El puntero IZQ en el nodo NUEVO apuntara a AUX
*D=nuevo; //El puntero D apuntara al nodo NUEVO
}
}
void TopeDer (NODO *D){
if (D != NULL) printf("\n Mostrando ultima estacion: %s \n",D->ELEM);
else printf ("La Cola esta vacia...");
}
int Es_vacia (NODO *D){
if (D == NULL) //Verifica si el puntero D apunta a NULL
return(1);else
return (0);
}
void ImprimirIzq(NODO *I){
NODO *AUX; //Crea un puntero AUX con la dimension de NODO
AUX = I;//Posiciona AUX en donde esta I
if (AUX != NULL){ //Verifica si AUX apunta a NULL
printf("primera estacion: %s",AUX->ELEM); //Imprime lo que contiene AUX en la variable ELEM
AUX=AUX->der; //Desplaza AUX por la derecha
}
while (AUX !=NULL){ //Verifica si AUX apunta a NULL
printf("-> %s",AUX->ELEM); //Imprime lo que contiene la variable ELEM
AUX=AUX->der; //Desplaza AUX por la derecha
}
printf("->NULL");
}//Fin Void
void IMPRIMIR(NODO *I,NODO *D){
NODO *tren1;
NODO *tren2;
NODO *tren3;
NODO *tren4;...
Regístrate para leer el documento completo.