Trenes C++

Páginas: 6 (1374 palabras) Publicado: 5 de junio de 2012
#include <stdio.h>
#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;...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • tren
  • trenees
  • Tren
  • Tren
  • el tren
  • tren
  • El Tren
  • trenes

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS