Anda di halaman 1dari 17

Institut Rosario Castellanos

Struktur data

Pengalaman belajar:
Struktur data linier untuk
pemecahan masalah: daftar, tumpukan dan antrian

LAITI301B1O_21-2

Hadiah
Fabián Antonio Osorio García

guru
FRANCISCO JACOB AVILA CAMACHO

kota Meksiko

September 2021

1
Pengalaman Pembelajaran: Struktur data linier untuk pemecahan masalah:
daftar, tumpukan, dan antrian
Tujuan:

Insiden kritis

Kembali ke konteks yang dijelaskan oleh masalah prototipikal di mana Anda


adalah seorang pengusaha muda yang telah mengusulkan pengembangan solusi
TI yang memungkinkan orang-orang yang ingin bepergian ke tempat yang sama
pada waktu yang sama mengatur diri mereka untuk bepergian bersama.

Sebagai langkah pertama, kita harus mendefinisikan dan menyimpan data dasar
yang kita perlukan agar pengguna dapat meminta perjalanan menggunakan
aplikasi “Ecoviaje” kita.

Yang harus Anda lakukan adalah membuat struktur data (Permintaan) yang
memungkinkan Anda menentukan dan menyimpan informasi dasar yang
diperlukan pengguna untuk meminta perjalanan.

Untuk menyederhanakan masalah, kami hanya akan mempertimbangkan atribut


berikut:

• Asal: kota asal (misalnya Puebla).

• tujuan: kota tujuan (misalnya CDMX).

• pengguna: id pengguna (misalnya, jperez)

Bagaimana Anda akan mengajukan permintaan ini?

Indikasi

Kegiatan ini akan dibagi menjadi dua momen:

Momen pertama

2
1. Bacalah isi unit dengan cermat.

2. Pilih antara alternatif penerapan struktur data tipe daftar, Permintaan Daftar
yang memungkinkan Anda menyimpan semua permintaan berdasarkan
daftar tunggal atau daftar ganda dan jelaskan mengapa Anda memilih
penerapan tersebut (benarkan)

3. Integrasikan informasi ini ke dalam dokumen teks dengan nomenklatur


berikut LAIT301_ U2_EA_nama belakang ayah_nama depan.

Diputuskan untuk menggunakan daftar sederhana karena hanya penyisipan yang


diurutkan berdasarkan urutan masuk ke dalam daftar A dan B yang diperlukan.
Dengan cara ini, tidak perlu menempati daftar ganda karena kami tidak akan
memasukkan elemen dari belakang atau melakukan traversal elemen, penyisipan
akan dilakukan dari satu sisi saja, seolah-olah itu adalah antrian.

Momen kedua

4. Buat kelas atau fungsi untuk mengelola permintaan perjalanan Berbagi


Kendaraan dan kelas atau fungsi untuk menyimpan semua permintaan
Daftar Permintaan menggunakan bahasa pemrograman dan perangkat
lunak pilihan Anda (Jika ragu, konsultasikan informasinya dengan guru
Anda)

Kelas atau fungsi Vehicle Share harus mengimplementasikan/melakukan metode


atau operasi berikut:

a) menggabungkan Permintaan yang menerima sebagai parameter dua objek/data


bertipe Daftar Permintaan.

Fungsi atau metode harus mengembalikan objek bertipe Daftar Permintaan yang
isinya merupakan elemen dari kedua daftar masukan secara bergantian, yaitu
dalam urutan yang sama, tetapi mengintegrasikan elemen dari setiap daftar.

3
Mari kita lihat contoh dengan huruf:

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

Daftar 2: {B, J}

Hasil Permintaan penggabungan: {A, B, C, J, D, E, F, G}

b) Bagikan, yang menerima sebagai parameter dua objek atau data bertipe Daftar
Permintaan, dan yang mengembalikan objek bertipe Daftar Permintaan dengan
semua permintaan dari kedua daftar masukan, yang kota asalnya sama, dan juga
kota tujuannya.

Misalnya, jika A adalah permintaan yang ada di daftar pertama, dengan kota asal
Puebla dan CDMX tujuan, dan B adalah permintaan dari daftar kedua, juga
dengan Puebla asal dan CDMX tujuan, baik permintaan, A dan B, Mereka harus
ada dalam daftar yang dikembalikan oleh metode atau fungsi.

Program yang dirancang:

#termasuk<iostream>
#termasuk<string.h>
#definisikan benar 1
#definisikan salah 0
menggunakan namespace std;

permintaan struct typedef


{
karakter asal[20];
tujuan karakter[20];
karakter id[20];
}Aplikasi;

4
struktur typedef{
Permintaan S[1000];
ke yang terakhir;
}Daftar;

batal inisialisasi(Daftar &l);


void insert(Daftar *l,Permintaan S);
batal berbagi(Daftar &A,Daftar &B,Daftar *C,Permintaan S);
batal cetak(Daftar l);
batal batal(Daftar &l);

ke dalam utama()
{
Daftar A,B,C;
Permintaan Tambahan;
ke dalam pilihan, kembali;

inisialisasi(A);
inisialisasi(B);
inisialisasi(C);

Mengerjakan{
cout<<"\n\t\tDaftar Permintaan"<<endl;
cout<<"\n\t1 - Masukkan ke dalam daftar A";
cout<<"\n\t2 - Masukkan ke dalam daftar B";
cout<<"\n\t3 - Bagikan daftar";
cout<<"\n\t4 - Hapus daftar A";
cout<<"\n\t5 - Hapus daftar B";
cout<<"\n\t6 - Tampilkan daftar";
cout<<"\n\t0 - Keluar dari program";

5
cout<<"\n\tPilih opsi : ";
cin>>memilih;
buangan(stdin);
jika(opc==1||opc==2||opc==3)
{
jika(memilih==3)
{
cout<<"Masukkan Sumber dan Tujuan yang akan membagikan daftar
permintaan";
}
cout<<"\nMasukkan Asal :";
cin>>aux.origin;
cout<<"\nMasukkan Tujuan :";
cin>>aux.destinasi;
jika(memilih!=3)
{
cout<<"\nMasukkan ID :";
cin>>aux.id;
}
kalau tidak
{
strcpy(aux.id,"NULL");
}
}

beralih(memilih){
kasus 1:
masukkan(&A,tambahan);
cout<<"\nDAFTAR KE:";
mencetak(A);
merusak;

6
kasus 2:
masukkan(&B,tambahan);
cout<<"\nDAFTAR B:";
mencetak(B);
merusak;
kasus 3:
inisialisasi(C);
berbagi(A,B,&C,aux);
merusak;
kasus 4:
batal(A);
merusak;
kasus 5:
batal(B);
merusak;
kasus 6:
cout<<"\nDAFTAR KE:";
mencetak(A);
cout<<"\nDAFTAR B:";
mencetak(B);
cout<<"\nDAFTAR C:";
mencetak(C);
merusak;
bawaan:
jika(memilih==0){
cout<<"\n\t\tKeluar dari program. Selamat tinggal!!\n\n";
kembali 0;
}
kalau tidak{
cout<<"\n\t\t** Opsi di luar jangkauan. Coba lagi. **\n"<<endl;
}

7
merusak;

}
}sementara(memilih);

kembali 0;
}

batal inisialisasi(Daftar &l){


l.terakhir = -1;
}

void insert(Daftar *l,Permintaan S){


ke dalam aku;
jika(l->terakhir==-1)
{
aku->terakhir = 0;
}
strcpy(l->S[l->terakhir].tujuan,S.tujuan);
strcpy(l->S[l->terakhir].asal,S.asal);
strcpy(l->S[l->terakhir].id,S.id);
l->terakhir++;
cout<<"\n\tDimasukkan:"<<S.id<<endl;
}

batal cetak(Daftar l){


ke dalam saya = 0;
if(l.terakhir==-1)
{
cout<<"\n\tDaftar kosong."<<endl;

8
kembali;
}

while(i<l.terakhir){
cout<<"\n"<<"ID:"<<lS[i].id<<" O:"<<lS[i].asal<<" D:"<<lS[i].tujuan< <"\
n"<<endl;
saya=saya+1;
}
}

batal batal(Daftar &l){


if(l.terakhir = -1){
cout<<"\n\tSemua elemen telah dihapus."<<endl;
}
kalau tidak{
cout<<"\n\tTidak ada elemen dalam daftar."<<endl;
}
}
batal berbagi(Daftar &A,Daftar &B,Daftar *C,Permintaan S)
{
int i=0,j=0,putaran=1,putaran,t=0;

belokan = A.terakhir + B.terakhir;

while(t<berputar)
{
if(turn == 1)//DAFTAR ULASAN A
{

if(strcmp(AS[i].origin,S.origin)==0&&strcmp(AS[i].destination,S.destination)==0)

9
{
masukkan(C,AS[i]);
belok = 2;
}
saya++;

}
lain //TINJAUAN DAFTAR B
{

if(strcmp(BS[j].asal,S.asal)==0&&strcmp(BS[j].tujuan,S.tujuan)==0)
{
masukkan(C,BS[j]);
pergeseran = 1;
}
j++;
}
t++;
if(i==A.terakhir&&j<B.terakhir)
{
pergeseran=2;
}
if(j==B.terakhir&&i<A.terakhir)
{
pergeseran=1;
}

10
11
12
13
14
15
16
17

Anda mungkin juga menyukai