Está en la página 1de 13

NOMBRE: HUGO ALBERTO ORTIZ ANAYA

GRUPO: G303
PROFESOR(A): SERGIO ELIAS CASTA„ON NAVARRO
ASIGNATURA: ESTRUCTURAS DE DATOS
ESTRUCTURAS DE DATOS LINEALES PARA LA SOLUCIÓN DE
PROBLEMAS: LISTAS, PILAS Y COLAS
Experiencia de Aprendizaje:
Estructuras de datos lineales para la solución de problemas: listas, pilas y colas
Propósito: Incidente crítico Retoma el contexto descrito por el problema
prototípico en el que eres un joven emprendedor que se ha propuesto el
desarrollo de una solución informática que permita a las personas que quieren
desplazarse al mismo lugar al mismo momento puedan organizarse para viajar
juntos. Como primer paso debemos definir y almacenar los datos básicos que
necesitaremos para que un usuario pueda solicitar un viaje usando nuestra
aplicación “Eco viaje”. Lo que debes hacer es crea la estructura de datos (Solicitud)
que te permita definiry almacenar la información básica necesaria para que un
usuario pueda solicitar un viaje. Para simplificar el problema, sólo consideraremos
los siguientes atributos:
• Origen: ciudad de origen (por ejemplo, Puebla).
• destino: ciudad de destino (por ejemplo, CDMX).
• usuario: id del usuario (por ejemplo, jperez)
¿Cómo realizarás esta solicitud? Indicaciones Esta actividad estará dividida en dos
momentos: Primer momento
1. Lee detenidamente el contenido de la unidad.
2. Elije entre las alternativas de implementar estructura de datos tipo lista, Lista
Solicitudes que te permita almacenar todas las peticiones basadas en una lista
simple o una lista doble y explica por qué elegiste esa implementación (justifícalo)

Se decidió emplear listas simples ya que solo sería necesaria la inserción ordenada
por orden de ingreso a las listas A y B. de esta forma no es necesario ocupar una
lista doble ya que no introduciríamos elementos por detrás o realizaríamos
recorridos de los elementos, la inserción seria por un solo lado, como si de una
cola se tratara.

Segundo momento
4. Crea una clase o función para gestionar las peticiones de viaje Comparte
Vehículo y una clase o función para almacenar todas las peticiones Lista Solicitudes
utilizado el lenguaje de programación y el software de tu preferencia (Si tienes
dudas consultada la información con tu docente)

La clase o función Comparte Vehículo debe implementar/realizar los siguiente


métodos u operaciones: a) fusiona Solicitudes que recibe como parámetros dos
objetos/datos del tipo Lista Solicitudes. La función o método debe devolver un
objeto del tipo Lista Solicitudes cuyo contenido sean los elementos de ambas listas
de entrada de forma alternada, es decir en el mismo orden, pero integrando un
elemento de cada lista. Veamos un ejemplo con letras:
Lista 1: {A, C, D, E, F, G} Lista 2: {B, J} Resultado de fusiona Solicitudes: {A, B, C, J, D,
E, F, G} b) Compartir, que reciba como parámetros dos objetos o datos de tipo
Lista Solicitudes, y que devuelva un objeto de tipo Lista Solicitudes con todas las
peticiones de ambas listas de entrada, cuyas ciudades de origen son iguales, y
también sus ciudades de destino. Por ejemplo, si A es una petición que está en la
primera lista, con ciudad origen Puebla y destino CDMX, y a su vez B es una
petición de la segunda lista, también con origen Puebla y destino CDMX, ambas
peticiones, A y B, deberán estar en la lista que devuelve el método o función.

programa diseñado:
#include<iostream>
#include<string.h>
#define true 1
#define false 0
using namespace std;
typedef struct solicitudes
{
char origen[20];
char destino[20];
char id[20];
}Solicitud;
typedef struct
{
Solicitud S[1000];
int ultimo;
} Lista;

void inicializa (Lista &l);


void insertar (Lista *l, Solicitud S);
void compartir (Lista &A, Lista &B, Lista *C, Solicitud S);
void imprimir (Lista l);
void anular (Lista &l);
int main ()
{
Lista A, B, C;
Solicitud aux;
int opc, retorno;
inicializa(A);
inicializa(B);
inicializa(C);
do {
cout<<"\n\t\tListas de Solicitudes"<<endl;
cout<<"\n\t1 - Insertar en lista A";
cout<<"\n\t2 - Insertar en lista B";
cout<<"\n\t3 - Compartir listas";
cout<<"\n\t4 - Eliminar lista A";
cout<<"\n\t5 - Eliminar lista B";
cout<<"\n\t6 - Mostrar listas";
cout<<"\n\t0 - Salir del programa";
cout<<"\n\tSeleccione opción: ";
cin>>opc;

fflush (stdin);
if(opc==1||opc==2||opc==3)
{
if(opc==3)
{
cout<<"Ingresa el Origen y destino que compartiran lista de
solicitudes";
}
cout<<"\nIngresa Origen:";
cin>>aux. origen;
cout<<"\nIngresa Destino:";
cin>>aux. destino;
if(opc! =3)
{
cout<<"\nIngresa ID:";
cin>>aux. Id;
}
else
{
strcpy(aux.id,"NULL");
}
}
switch(opc) {
case 1:
insertar(&A,aux);
cout<<"\nLISTA A:";
imprimir(A);
break;
case 2:
insertar(&B,aux);
cout<<"\nLISTA B:";
imprimir(B);
break;
case 3:
inicializa(C);
compartir(A,B,&C,aux);
break;
case 4:
anular(A);
break;
case 5:
anular(B);
break;
case 6:
cout<<"\nLISTA A:";
imprimir(A);
cout<<"\nLISTA B:";
imprimir(B);
cout<<"\nLISTA C:";
imprimir(C);
break;
default:
if(opc==0) {
cout<<"\n\t\tSaldra del programa. Adios!!\n\n";
return 0;
}
else{
cout<<"\n\t\t** Opcion fuera de rango. Vuelva a intentarlo. **\
n"<<endl;
}
break;

También podría gustarte