Documente Academic
Documente Profesional
Documente Cultură
Structură de date
Experiență de învățare:
Structuri liniare de date pt
depanare: liste, stive și cozi
LAITI301B1O_21-2
Cadouri
Fabián Antonio Osorio García
profesor
FRANCISCO JACOB AVILA CAMACHO
Mexico City
septembrie 2021
1
Experiență de învățare: Structuri liniare de date pentru rezolvarea
problemelor: liste, stive și cozi
Scop:
Incident critic
În primul pas, trebuie să definim și să stocăm datele de bază de care vom avea
nevoie pentru ca un utilizator să poată solicita o călătorie folosind aplicația noastră
„Ecoviaje”.
Indicatii
Primul moment
2
1. Citiți cu atenție conținutul unității.
Al doilea moment
a) îmbină Solicitări care primesc ca parametri două obiecte/date de tip Lista Cereri.
Funcția sau metoda trebuie să returneze un obiect de tip Lista Cereri al cărui
conținut sunt elementele ambelor liste de intrare alternativ, adică în aceeași ordine,
dar integrând câte un element din fiecare listă.
Lista 1: {A, C, D, E, F, G}
3
Lista 2: {B, J}
b) Share, care primește ca parametri două obiecte sau date de tip Requests List, și
care returnează un obiect de tip Requests List cu toate solicitările din ambele liste
de intrare, ale căror orașe de origine sunt aceleași, precum și orașele de destinație
ale acestora.
De exemplu, dacă A este o cerere care se află în prima listă, cu orașul de origine
Puebla și destinația CDMX, iar la rândul său B este o cerere din a doua listă, tot cu
originea Puebla și destinația CDMX, ambele cereri, A și B, Ele trebuie să fie în lista
returnată de metodă sau funcție.
Program conceput:
#include<iostream>
#include<string.h>
#definiți adevărat 1
#definiți fals 0
folosind namespace std;
typedef struct{
Solicitare S[1000];
4
int ultimul;
}Listă;
int main()
{
Lista A,B,C;
Solicitare Aux;
int opt,retur;
initialize(A);
initialize(B);
initialize(C);
do{
cout<<"\n\t\tSolicitare liste"<<endl;
cout<<"\n\t1 - Inserați în lista A";
cout<<"\n\t2 - Inserați în lista B";
cout<<"\n\t3 - Partajați liste";
cout<<"\n\t4 - Ștergeți lista A";
cout<<"\n\t5 - Șterge lista B";
cout<<"\n\t6 - Afișează liste";
cout<<"\n\t0 - Ieșiți din program";
cout<<"\n\tSelectați opțiunea: ";
cin>>opt;
fflush(stdin);
5
if(opc==1||opc==2||opc==3)
{
dacă(opt==3)
{
cout<<"Introduceți Sursa și destinația care vor partaja lista de
solicitări";
}
cout<<"\nIntroduceți originea:";
cin>>aux.origin;
cout<<"\nIntroduceți destinația:";
cin>>aux.destination;
dacă (optați!=3)
{
cout<<"\nIntroduceți ID:";
cin>>aux.id;
}
altfel
{
strcpy(aux.id,"NULL");
}
}
comutați(optați){
cazul 1:
insert(&A,aux);
cout<<"\nLIST TO:";
print(A);
pauză;
cazul 2:
insert(&B,aux);
cout<<"\nLISTA B:";
6
imprimare(B);
pauză;
cazul 3:
initialize(C);
share(A,B,&C,aux);
pauză;
cazul 4:
gol (A);
pauză;
cazul 5:
gol (B);
pauză;
cazul 6:
cout<<"\nLIST TO:";
print(A);
cout<<"\nLISTA B:";
imprimare(B);
cout<<"\nLISTA C:";
imprimare(C);
pauză;
Mod implicit:
dacă(opt==0){
cout<<"\n\t\tIeși din program. La revedere!!\n\n";
returnează 0;
}
altfel{
cout<<"\n\t\t** Opțiune în afara intervalului. Încearcă din nou. **\
n"<<endl;
}
pauză;
7
}
}while(opt);
returnează 0;
}
8
în timp ce(i<l.last){
cout<<"\n"<<"ID:"<<lS[i].id<<" O:"<<lS[i].origine<<" D:"<<lS[i].destinație< <<\
n"<<endl;
i=i+1;
}
}
în timp ce(t<turns)
{
if(turn == 1)//REVUZI LISTA A
{
if(strcmp(AS[i].origin,S.origin)==0&&strcmp(AS[i].destination,S.destination)==0)
{
insert(C,AS[i]);
9
turn = 2;
}
i++;
}
else // REVIZIONARE LISTA B
{
if(strcmp(BS[j].origin,S.origin)==0&&strcmp(BS[j].destination,S.destination)==0)
{
insert(C,BS[j]);
shift = 1;
}
j++;
}
t++;
if(i==A.last&&j<B.last)
{
shift=2;
}
if(j==B.last&&i<A.last)
{
shift=1;
}
10
11
12
13
14
15
16
17