Académique Documents
Professionnel Documents
Culture Documents
Structure de données
Expérience d'apprentissage:
Structures de données linéaires pour
dépannage : listes, piles et files d'attente
LAITI301B1O_21-2
Cadeaux
Fabián Antonio Osorio García
professeur
FRANCISCO JACOB AVILA CAMACHO
Mexico
septembre 2021
1
Expérience d'apprentissage : structures de données linéaires pour la
résolution de problèmes : listes, piles et files d'attente
But:
Incident critique
Dans un premier temps, nous devons définir et stocker les données de base dont
nous aurons besoin pour qu'un utilisateur puisse demander un voyage via notre
application « Ecoviaje ».
Ce que vous devez faire est de créer la structure de données (Demande) qui vous
permet de définir et de stocker les informations de base nécessaires à un
utilisateur pour demander un voyage.
Les indications
Premier instant
2
1. Lisez attentivement le contenu de l'appareil.
Il a été décidé d'utiliser des listes simples puisque seule une insertion ordonnée
par ordre d'entrée dans les listes A et B serait nécessaire. De cette façon, il n'est
pas nécessaire d'occuper une double liste puisque nous n'introduireions pas
d'éléments par derrière ni n'effectuerions de traversées d'éléments, l'insertion se
ferait d'un seul côté, comme s'il s'agissait d'une file d'attente.
Deuxième instant
4. Créez une classe ou une fonction pour gérer les demandes de déplacement
en véhicule partagé et une classe ou une fonction pour stocker toutes les
demandes. Listez les demandes en utilisant le langage de programmation et
le logiciel de votre choix (Si vous avez des doutes, consultez les
informations avec votre professeur)
3
Voyons un exemple avec des lettres :
Liste 1 : {A, C, D, E, F, G}
Liste 2 : {B, J}
b) Share, qui reçoit en paramètres deux objets ou données de type Requests List,
et qui renvoie un objet de type Requests List avec toutes les requêtes des deux
listes d'entrée, dont les villes d'origine sont les mêmes, ainsi que leurs villes de
destination.
Par exemple, si A est une demande qui figure dans la première liste, avec la ville
d'origine Puebla et la destination CDMX, et que B est à son tour une demande de
la deuxième liste, également avec l'origine Puebla et la destination CDMX, les
deux demandes, A et B, Ils doivent figurer dans la liste renvoyée par la méthode
ou la fonction.
Programme conçu :
#include<iostream>
#include<string.h>
#définir vrai 1
#définir faux 0
en utilisant l'espace de noms std ;
4
}Application;
structure typedef{
Demande S[1000] ;
int dernier ;
}Liste;
int main()
{
Liste A, B, C ;
Demande Aux ;
int opt,retour;
initialiser(A);
initialiser(B);
initialiser(C);
faire{
cout<<"\n\t\tListes de requêtes"<<endl;
cout<<"\n\t1 - Insérer dans la liste A";
cout<<"\n\t2 - Insérer dans la liste B";
cout<<"\n\t3 - Partager des listes";
cout<<"\n\t4 - Supprimer la liste A";
cout<<"\n\t5 - Supprimer la liste B";
cout<<"\n\t6 - Afficher les listes";
5
cout<<"\n\t0 - Quitte le programme";
cout<<"\n\tSélectionnez l'option : ";
cin>>opter ;
fflush(stdin);
si(opc==1||opc==2||opc==3)
{
si(opt==3)
{
cout<<"Entrez la Source et la destination qui partageront la liste des
requêtes";
}
cout<<"\nEntrez Origine :";
cin>>aux.origine;
cout<<"\nEntrez la destination :";
cin>>aux.destination;
si (opt! = 3)
{
cout<<"\nEntrez l'ID :";
cin>>aux.id;
}
autre
{
strcpy(aux.id,"NULL");
}
}
changer (opter) {
cas 1:
insérer(&A,aux);
cout<<"\nLIST TO:";
imprimer(A);
6
casser;
cas 2 :
insert(&B,aux);
cout<<"\nLISTE B:";
imprimer(B);
casser;
cas 3 :
initialiser(C);
partager(A,B,&C,aux);
casser;
cas 4 :
vide(A);
casser;
cas 5 :
vide(B);
casser;
cas 6 :
cout<<"\nLIST TO:";
imprimer(A);
cout<<"\nLISTE B:";
imprimer(B);
cout<<"\nLIST C:";
imprimer(C);
casser;
défaut:
si(opt==0){
cout<<"\n\t\tQuittez le programme. Au revoir !!\n\n";
renvoie 0 ;
}
autre{
cout<<"\n\t\t** Option hors plage. Essayer à nouveau. **\n"<<endl;
7
}
casser;
}
} while (opter);
renvoie 0 ;
}
8
cout<<"\n\tListe vide."<<endl;
retour;
}
while(i<l.dernier){
cout<<"\n"<<"ID:"<<lS[i].id<<" O:"<<lS[i].origin<<" D:"<<lS[i].destination< <"\
n"<<endl;
je = je + 1 ;
}
}
pendant que(t<tours)
{
if(turn == 1)//REVUE LISTE A
{
9
if(strcmp(AS[i].origin,S.origin)==0&&strcmp(AS[i].destination,S.destination)==0)
{
insérer(C,AS[i]);
tour = 2 ;
}
je++;
}
sinon //REVISER LA LISTE B
{
if(strcmp(BS[j].origin,S.origin)==0&&strcmp(BS[j].destination,S.destination)==0)
{
insérer(C,BS[j]);
décalage = 1 ;
}
j++;
}
t++ ;
si(i==A.dernier&&j<B.dernier)
{
décalage=2 ;
}
si(j==B.dernier&&i<A.dernier)
{
décalage=1 ;
}
10
}
11
12
13
14
15
16
17