Beruflich Dokumente
Kultur Dokumente
Datenstruktur
Lernerfahrung:
Lineare Datenstrukturen für
Fehlerbehebung: Listen, Stapel und Warteschlangen
LAITI301B1O_21-2
Die Geschenke
Fabián Antonio Osorio García
Lehrer
FRANCISCO JACOB AVILA CAMACHO
Mexiko Stadt
September 2021
1
Lernerfahrung: Lineare Datenstrukturen zur Problemlösung: Listen, Stapel
und Warteschlangen
Zweck:
Katastrophe
Kehren Sie zu dem Kontext zurück, der durch das prototypische Problem
beschrieben wird, in dem Sie ein junger Unternehmer sind, der die Entwicklung
einer IT-Lösung vorgeschlagen hat, die es Menschen, die zur gleichen Zeit an
denselben Ort reisen möchten, ermöglicht, sich zu organisieren, um gemeinsam zu
reisen.
Im ersten Schritt müssen wir die Basisdaten definieren und speichern, die wir
benötigen, damit ein Benutzer eine Reise über unsere Anwendung „Ecoviaje“
anfordern kann.
Sie müssen lediglich die Datenstruktur (Anfrage) erstellen, die es Ihnen ermöglicht,
die grundlegenden Informationen zu definieren und zu speichern, die ein Benutzer
benötigt, um eine Reise anzufordern.
Hinweise
Erster Moment
2
1. Lesen Sie den Inhalt der Einheit sorgfältig durch.
Zweiter Moment
4. Erstellen Sie eine Klasse oder Funktion zum Verwalten von Share Vehicle-
Reiseanfragen und eine Klasse oder Funktion zum Speichern aller
Anfragen. Listen Sie Anfragen mit der Programmiersprache und Software
Ihrer Wahl auf (Wenn Sie Zweifel haben, konsultieren Sie die Informationen
mit Ihrem Lehrer)
Die Vehicle Share-Klasse oder -Funktion muss die folgenden Methoden oder
Vorgänge implementieren/ausführen:
a) führt Anfragen zusammen, die als Parameter zwei Objekte/Daten vom Typ
Anfrageliste erhalten.
Die Funktion oder Methode muss ein Objekt vom Typ „Requests List“
zurückgeben, dessen Inhalt abwechselnd die Elemente beider Eingabelisten sind,
3
d. h. in derselben Reihenfolge, jedoch unter Einbeziehung eines Elements aus
jeder Liste.
Liste 1: {A, C, D, E, F, G}
Liste 2: {B, J}
b) Share, das als Parameter zwei Objekte oder Daten vom Typ „Requests List“
empfängt und ein Objekt vom Typ „Requests List“ mit allen Anfragen aus beiden
Eingabelisten zurückgibt, deren Ursprungsstädte dieselben sind, und auch deren
Zielstädte.
Wenn beispielsweise A eine Anfrage ist, die in der ersten Liste steht, mit der
Herkunftsstadt Puebla und dem Ziel CDMX, und B wiederum eine Anfrage aus der
zweiten Liste ist, ebenfalls mit Herkunft Puebla und Ziel CDMX, sind beide
Anfragen, A und B: Sie müssen in der von der Methode oder Funktion
zurückgegebenen Liste enthalten sein.
Entworfenes Programm:
#include<iostream>
#include<string.h>
#define true 1
#define false 0
Verwenden des Namensraums std;
Typedef-Strukturanfragen
{
4
char-Ursprung[20];
char-Ziel[20];
char id[20];
}Anwendung;
typedef struct{
Anfrage S[1000];
int zuletzt;
}Aufführen;
int main()
{
Liste A, B, C;
Aux-Anfrage;
int opt,return;
initialisieren(A);
initialisieren(B);
initialisieren(C);
Tun{
cout<<"\n\t\tAnforderungslisten"<<endl;
cout<<"\n\t1 - In Liste A einfügen";
cout<<"\n\t2 - In Liste B einfügen";
cout<<"\n\t3 - Listen teilen";
5
cout<<"\n\t4 - Liste A löschen";
cout<<"\n\t5 - Liste B löschen";
cout<<"\n\t6 - Listen anzeigen";
cout<<"\n\t0 - Programm beenden";
cout<<"\n\tOption auswählen: ";
cin>>opt;
flush(stdin);
if(opc==1||opc==2||opc==3)
{
if(opt==3)
{
cout<<"Geben Sie die Quelle und das Ziel ein, die die Liste der
Anforderungen teilen sollen";
}
cout<<"\nEnter Origin:";
cin>>aux.origin;
cout<<"\nGeben Sie das Ziel ein:";
cin>>aux.destination;
if(opt!=3)
{
cout<<"\nID eingeben:";
cin>>aux.id;
}
anders
{
strcpy(aux.id,"NULL");
}
}
switch(opt){
Fall 1:
6
einfügen(&A,aux);
cout<<"\nLIST TO:";
drucken(A);
brechen;
Fall 2:
einfügen(&B,aux);
cout<<"\nLISTE B:";
drucken(B);
brechen;
Fall 3:
initialisieren(C);
share(A,B,&C,aux);
brechen;
Fall 4:
void(A);
brechen;
Fall 5:
void(B);
brechen;
Fall 6:
cout<<"\nLIST TO:";
drucken(A);
cout<<"\nLISTE B:";
drucken(B);
cout<<"\nLIST C:";
drucken(C);
brechen;
Standard:
if(opt==0){
cout<<"\n\t\tBeenden Sie das Programm. Auf Wiedersehen!!\n\n";
0 zurückgeben;
7
}
anders{
cout<<"\n\t\t** Option außerhalb des gültigen Bereichs. Versuchen Sie
es erneut. **\n"<<endl;
}
brechen;
}
}while(opt);
0 zurückgeben;
}
8
void print(List l){
int i = 0;
if(l.last==-1)
{
cout<<"\n\tLeere Liste."<<endl;
zurückkehren;
}
while(i<l.last){
cout<<"\n"<<"ID:"<<lS[i].id<<" O:"<<lS[i].origin<<" D:"<<lS[i].destination< <"\
n"<<endl;
i=i+1;
}
}
while(t<turns)
{
9
if(turn == 1)//LISTE A ÜBERPRÜFEN
{
if(strcmp(AS[i].origin,S.origin)==0&&strcmp(AS[i].destination,S.destination)==0)
{
insert(C,AS[i]);
drehen = 2;
}
i++;
}
sonst //REVIEWLISTE B
{
if(strcmp(BS[j].origin,S.origin)==0&&strcmp(BS[j].destination,S.destination)==0)
{
insert(C,BS[j]);
Verschiebung = 1;
}
j++;
}
t++;
if(i==A.last&&j<B.last)
{
Verschiebung=2;
}
if(j==B.last&&i<A.last)
{
Verschiebung=1;
10
}
11
12
13
14
15
16
17