Sie sind auf Seite 1von 17

Rosario Castellanos Institut

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.

Um das Problem zu vereinfachen, betrachten wir nur die folgenden Attribute:

• Herkunft: Herkunftsstadt (z. B. Puebla).

• Ziel: Zielstadt (z. B. CDMX).

• Benutzer: Benutzer-ID (z. B. jperez)

Wie werden Sie diese Anfrage stellen?

Hinweise

Diese Aktivität wird in zwei Momente unterteilt:

Erster Moment

2
1. Lesen Sie den Inhalt der Einheit sorgfältig durch.

2. Wählen Sie zwischen den Alternativen zur Implementierung einer


listenartigen Datenstruktur, Listenanfragen, die es Ihnen ermöglicht, alle
Anfragen basierend auf einer einzelnen Liste oder einer doppelten Liste zu
speichern, und erläutern Sie, warum Sie sich für diese Implementierung
entschieden haben (begründen Sie sie).

3. Integrieren Sie diese Informationen in ein Textdokument mit der folgenden


Nomenklatur LAIT301_ U2_EA_väterlicher Nachname_Vorname.

Es wurde beschlossen, einfache Listen zu verwenden, da nur eine nach der


Reihenfolge der Eintragung in die Listen A und B geordnete Einfügung erforderlich
wäre. Auf diese Weise ist es nicht notwendig, eine doppelte Liste zu belegen, da
wir keine Elemente von hinten einführen oder Elementdurchläufe durchführen
würden, sondern die Einfügung nur von einer Seite erfolgen würde, als wäre es
eine Warteschlange.

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.

Sehen wir uns ein Beispiel mit Buchstaben an:

Liste 1: {A, C, D, E, F, G}

Liste 2: {B, J}

Ergebnis der Zusammenführungsanfragen: {A, B, C, J, D, E, F, G}

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;

void initialize(List &l);


void insert(List *l,Request S);
void share(List &A,List &B,List *C,Request S);
void print(List l);
void void(List &l);

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;
}

void initialize(List &l){


l.last = -1;
}

void insert(List *l,Request S){


int i;
if(l->last==-1)
{
l->last = 0;
}
strcpy(l->S[l->last].destination,S.destination);
strcpy(l->S[l->last].origin,S.origin);
strcpy(l->S[l->last].id,S.id);
l->last++;
cout<<"\n\tEs wurde eingefügt:"<<S.id<<endl;
}

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;
}
}

void void(Liste &l){


if(l.last = -1){
cout<<"\n\tAlle Elemente wurden gelöscht."<<endl;
}
anders{
cout<<"\n\tDie Liste enthält keine Elemente."<<endl;
}
}
void share(List &A,List &B,List *C,Request S)
{
int i=0,j=0,turn=1,turns,t=0;

dreht sich = A.last + B.last;

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

Das könnte Ihnen auch gefallen