LAIT301 - U2 - EA - Gaspar - David

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 8

UNIVERSIDAD DE ESTUDIOS SUPERIORES

“ROSARIO CASTELLANOS”

Licenciatura en Tecnologías de Información y Comunicación

Actividad de Aprendizaje:

Estructuras de datos lineales para la solución


de problemas: listas, pilas y colas
Presenta:

David Gaspar Velazquez

Matricula:22201584-2
Asesor: Valeria Fernanda Abarca Landero
Asignatura: Estructura de Datos
Grupo: G305

Gustavo A Madero, CDMX, 26 de octubre del 2024


Esta actividad estará dividida en dos momentos:

Primer momento
Elije entre las alternativas de implementar estructura de datos tipo lista,
ListaSolicitudes 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)
La lista que vamos a utilizar para esta actividad será una lista simple. Este tipo de
lista es ideal para la inserción de los datos ya que solo será por un solo lado, es
decir no será necesario ir ocupar una lista doble ya que no introduciríamos
elementos por detrás o realizaríamos recorridos de los elementos.
Segundo momento

Crea una clase o función para gestionar las peticiones de viaje ComparteVehiculo
y una clase o función para almacenar todas las peticiones ListaSolicitudes
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 ComparteVehiculo debe implementar/realizar los siguiente
métodos u operaciones:
a) fusionaSolicitudes que recibe como parámetros dos objetos/datos del tipo
ListaSolicitudes.
La función o método debe devolver un objeto del tipo ListaSolicitudes 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 fusionaSolicitudes: {A,B,C,J,D,E,F,G}

b) Compartir, que reciba como parámetros dos objetos o datos de tipo


ListaSolicitudes, y que devuelva un objeto de tipo ListaSolicitudes 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.
CODIGO:
#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 Listas 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\n Seleccione opcion: ";

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;

}while(opc);

return 0;

void inicializa(Lista &l){

l.ultimo = -1;

void insertar(Lista *l,Solicitud S){

int i;

if(l->ultimo==-1){

l->ultimo = 0;

strcpy(l->S[l->ultimo].destino,S.destino);

strcpy(l->S[l->ultimo].origen,S.origen);

strcpy(l->S[l->ultimo].id,S.id);

l->ultimo++;

cout<<"\n\tSe inserto:"<<S.id<<endl;

void imprimir(Lista l){

int i = 0;

if(l.ultimo==-1){

cout<<"\n\tLista vacia."<<endl;

return;

while(i<l.ultimo){
cout<<"\n"<<"ID:"<<l.S[i].id<<" O:"<<l.S[i].origen<<" D:"<<l.S[i].destino<<"\n"<<endl;

i=i+1;

void anular(Lista &l){

if(l.ultimo = -1){

cout<<"\n\tTodos los elementos han sido borrados."<<endl;

else{

cout<<"\n\tNo hay elementos en la lista."<<endl;

void compartir(Lista &A,Lista &B,Lista *C,Solicitud S){

int i=0,j=0,turno=1,turnos,t=0;

turnos = A.ultimo + B.ultimo;

while(t<turnos){

if(turno == 1){//REVISAR LISTA A

if(strcmp(A.S[i].origen,S.origen)==0&&strcmp(A.S[i].destino,S.destino)==0){

insertar(C,A.S[i]);

turno = 2;

i++;

else{ //REVISAR LISTA B

if(strcmp(B.S[j].origen,S.origen)==0&&strcmp(B.S[j].destino,S.destino)==0){

insertar(C,B.S[j]);

turno = 1;

j++;

t++;
if(i==A.ultimo&&j<B.ultimo){

turno=2;

if(j==B.ultimo&&i<A.ultimo){

turno=1;

Referencias:
Universidad Rosario Castellanos. (s/f). Estructura de datos Unidad 1: Estructura de datos.
edu.rcastellanos.cdmx.gob.mx. Recuperado de
https://edu.rcastellanos.cdmx.gob.mx/lad_A1/course/view.php?id=348

Grimaldo, A. F.-F. (9 de septiembre de 2023). Tipos y estructuras de datos. Obtenido de Universitat


de València: https://www.uv.es/afuertes/Informatica/ficheros/Tema4-Castellano.pdf

Juárez, U. A. (10 de septiembre de 2023). Tipo De Datos. Obtenido de El Proceso De


Programación: https://www.uacj.mx/CGTI/CDTE/JPM/Documents/IIT/Programacion/tipos-de-
datos.html

También podría gustarte