Anda di halaman 1dari 21

LAPORAN PRAKTIKUM STRUKTUR DATA

SEMESTER GASAL 2019/2020

MINGGU 06: (Linked List ADT)

Disusun oleh:

======
KELAS C

PROGRAM STUDI INFORMATIKA


FAKULTAS TEKNOLOGI INFORMASI
UNIVERSITAS KRISTEN DUTA WACANA
YOGYAKARTA 2019
RINGKASAN MATERI Struktur Data, ADT dan Class
Pada Minggu yang ke-5 ini materi yang saya pelajari adalah:

-Perbedaan antara Array, Vector dan List

-List dengan menggunakan Array

-List dengan menggunakan Vector

-List dari STL C++

Perbedaan antara Array, Vector dan List


Vector
Vector sama dengan array dinamis sehingga dapat menggantikan array, dengan kemampuan untuk
mengubah ukurannya sendiri secara otomatis ketika sebuah elemen dimasukkan atau dihapus,
dengan penyimpanannya ditangani secara otomatis oleh kontainer.

Untuk menggunakan vector perlu menyertakan header <vector>.


Bentuk pendeklarasiannya vector:
vector <type> nama_variabel (jumlah_elemen);
#jumlah elemen itu bersifat tidak tetap (boleh diisi atau tidak)

Contoh

vector <int> a;

-mendeklarasikan sebuah vector yang dipakai untuk menyimpan data bertype integer.
vector <int> b (5);

-mendeklarasikan sebuah vector dengan space memory untuk 5 data bertipe integer.

Bentuk pemkaian lain vector:


vector <float> c (10, 2.0)

-mendeklarasikan sebuah vector dengan ruang memori untuk 10 data bertipe float, dan pemakaian
masing-masing nilai elemennya dengan 2.0.
vector <float> d(c);

-vector d diberi nilai sama dengan vector c. itu merupakan men-Duplikasi.

vector <int> e = {7, 5, 16, 8} *hanya dapat digunakan jika compiler sudah mendukung c++11

#menginisialisasi vector juga dapat dilakukan dengan memanfaatkan array.

Elemen vektor ditempatkan dalam penyimpanan yang bersampingan atau berdekatan sehingga dia
dapat diakses dan dilalui memakai Iterator.

Fungsi tertentu yang terkait dengan vektor adalah:

Iterator

2
Iterator sangat mirip dengan pointer, Iterators digunakan untuk menunjuk ke alamat memori wadah
STL (Standard Template Library). Mereka terutama digunakan dalam urutan angka, karakter dll.
Mereka mengurangi kompleksitas dan waktu eksekusi program.

Operasi pada Iterator

Operasi pada iterator iter pada suatu container:

1. *iter : akses (dereferensi) item yg ditunjuk iterator

2. iter++ ++iter : menggeser iterator menunjuk ke item selanjutnya dalam container

3. iter-- --iter : menggeser iterator menunjuk ke item sebelumnya dalam container

4. iter1 == iter2 : return true jika kedua iterator menunjuk ke item yang sama dalam container

5. iter1 != iter2 : return true jika kedua iterator tidak menunjuk ke item yang sama dalam container

Semua class container menyediakan iterator mereka sendiri-sendiri dengan nama yang sama: iterator
– deklarasi: container::iterator variabelIterator

– contoh:
vector<int>::iterator it;

Semua class container mendefenisikan fungsi:

-begin () - Mengembalikan iterator yang menunjuk ke elemen pertama dalam vektor


-end () - Mengembalikan iterator yang menunjuk ke elemen teoritis yang mengikuti elemen terakhir
dalam vektor
-rbegin () - Mengembalikan iterator terbalik yang menunjuk ke elemen terakhir dalam vektor (awal
terbalik). Bergerak dari elemen terakhir ke elemen pertama
-rend () - Mengembalikan iterator terbalik yang menunjuk ke elemen teoretis sebelum elemen
pertama dalam vektor (dianggap sebagai ujung terbalik)
-cbegin () - Mengembalikan iterator konstan yang menunjuk ke elemen pertama dalam vektor.
-cend () - Mengembalikan iterator konstan yang menunjuk ke elemen teoritis yang mengikuti elemen
terakhir dalam vektor.
-crbegin () - Mengembalikan iterator terbalik konstan yang menunjuk ke elemen terakhir dalam vektor
(awal terbalik). Bergerak dari elemen terakhir ke elemen pertama
-crend () - Mengembalikan iterator terbalik konstan yang menunjuk ke elemen teoritis sebelum
elemen pertama dalam vektor (dianggap sebagai ujung terbalik).

Modifiers:
assign () - Ini memberikan nilai baru ke elemen vektor dengan mengganti yang lama

push_back () - Ini mendorong elemen ke dalam vektor dari belakang

pop_back () - Ini digunakan untuk pop atau menghapus elemen dari vektor dari belakang.

insert () - Ini menyisipkan elemen baru sebelum elemen pada posisi yang ditentukan

erase () - Digunakan untuk menghapus elemen dari wadah dari posisi atau rentang yang ditentukan.

3
swap () - Digunakan untuk menukar konten dari satu vektor dengan vektor lain dari jenis yang sama.
Ukuran mungkin berbeda.

clear () - Digunakan untuk menghapus semua elemen wadah vektor

emplace () - Ini memperluas wadah dengan memasukkan elemen baru di posisi

emplace_back () - Digunakan untuk memasukkan elemen baru ke dalam wadah vektor, elemen
baru ditambahkan ke akhir vector

Elemen Modifiers (Insert/Read/Erase)

Inserter() function, std :: vector :: inserter () adalah fungsi bawaan Standard Template Library (STL)
yang berfungsi menyisipkan elemen baru sebelum elemen pada posisi yang ditentukan.

Masih bingung?? Liat contohnya…

1. // insert()
2. #include<iostream>
3. #include<iterator>
4. #include<vector>
5. using namespace std;
6. int main()
7. {
8. vector<int> posisi1 = { 1, 2, 3, 4, 5, 6, 7, 8, 9};
9. vector<int> posisi2 = {20, 30, 40};
10.
11. // Mendeklarasikan iterator ke vektor
12. vector<int>::iterator ptr = posisi1.begin();
13.
14.
15. advance(ptr, 3);
16.
17. // menyalin 1 elemen vektor dengan menggunakan inserter lainnya
18. // menyisipkan posisi2 setelah posisi ke-3 di posisi1
19. copy(posisi2.begin(), posisi2.end(), inserter(posisi1,ptr));
20.
21.
22. cout << "Vektor baru setelah menyisipkan elemen adalah : ";
23. for (int &x : posisi1)
24. cout << x << " ";
25.
26. return 0;
27. }

Lalu dimanakah letaknya untuk penukaran atau menyisipkan elemennya??? Letak untuk peletaknya
ada di code diatas dengan distabilo kuning 😊 mengapa kok disitu??? Karena kita menyisipkan elemen
posisi2 ke dalam barisan elemn posisi1 setelah baris posisi ke-3 dari elemen posisi1.

Dan hasilnya:

Erase

4
Erase() sama seperti fungsi clear () digunakan untuk menghapus semua elemen wadah vektor,
sehingga membuatnya berukuran 0 kembali. digunakan untuk menghapus elemen dari wadah dari
posisi atau rentang yang ditentukan.

Syntaknya adalah

1. vectorname.erase (posisi)
2. vectorname.erase (posisi awal, posisi akhir)
Parameter:
Posisi elemen yang akan dihapus dalam bentuk iterator.
atau rentang yang ditentukan menggunakan start dan end iterator.
Hasil:
Elemen dihapus dari yang ditentukan
posisi container.

1. #include <iostream>
2. #include <vector>
3.
4. int main ()
5. {
6. std::vector<int> myvector;
7.
8. // membuat nilai value dari 1-10 (1,2,3,4,5,6,7,8,9,10)
9. for (int i=1; i<=10; i++) myvector.push_back(i);
10.
11. // menghapus nilai value elemen yang ke-9
12. myvector.erase (myvector.begin()+8);
13.
14. // menghapus 5 elemen pertama:
15. myvector.erase (myvector.begin(),myvector.begin()+4);
16.
17. std::cout << "myvector contains:";
18. for (unsigned i=0; i<myvector.size(); ++i)
19. std::cout << ' ' << myvector[i];
20. std::cout << '\n';
21.
22. return 0;
23. }

Kode diatas kita mau membuat gimana sih fungsinya bekerja, kita membuat dulu element yang mau
dihapus. Tadi kita sudah membuat element 1,2,3,4,5,6,7,8,9,10. Nah kita mau menghapus nih element
ke-8 ada diline 11-12 (jadi yang tadinya 1,2,3,4,5,6,7,8,9,10. Yang angka 9 hilang karena sudah di erase)
kenapa kok disitu 9 kan harusnya 8?? Karena mulai dari 0, sama juga dengan yang dibawah ini.

Lalu kita buat lagi nih kita hapus 5 elemt pertama dari element tadi yang kita sudah hapus 9nya
(1,2,3,4,5,6,7,8,10) menjadi

Nah sudah jelaskan gimana cara pemakaiannya?? Sudah terdapat koment jg penjelasan dikode agar
kamu semangkin jelas 😊.

5
CONTOH SOAL dan PEMBAHASANNYA
1. Penggunaan Clear()
clear () - Digunakan untuk menghapus semua elemen wadah vektor

vectorname.clear ()
Parameter:
Tidak ada parameter yang dilewati.
Hasil:
Semua elemen vektor adalah
dihapus (atau dihancurkan)

1. // penggunaan fungsi clear()


2. #include <iostream>
3. #include <vector>
4. using namespace std;
5.
6. int main()
7. {
8. vector<int> contoh;
9. contoh.push_back(1);
10. contoh.push_back(2);
11. contoh.push_back(3);
12. contoh.push_back(4);
13. contoh.push_back(5);
14. contoh.push_back(6);
15. contoh.push_back(7);
16. contoh.push_back(8);
17. contoh.push_back(9);
18. contoh.push_back(10);
19.
20. // element vector menjadi 1,2,3,4,5,6,7,8,9,10
21.
22. // menampilkan output layar..
23. for (auto it = contoh.begin(); it != contoh.end(); ++it)
24. cout << ' ' << *it;
25. return 0;
26. }

Setelah tadi kita membuat elemenya dari 1-10, tetapi itu belom selesai loh… kalua nga gitu yang
tertampilkan tetap 1-10, kita harus menambahkan fungsi clearnya dulu dengan menambahkan:

contoh.clear();

itu berfungsi untuk menghapus semua element yang ada didalamnya.. element yang tadi
1,2,3,4,5,6,7,8,9,10 sudah tiada karena sudah dihancurkan dan membuat elemnt tadi menjadi
kosong atau bersih.

6
Nah sudah pahamkan gimana cara penggunanannya??? Berikut kode komplit nya mereka...

1. // penggunaan fungsi clear()


2. #include <iostream>
3. #include <vector>
4. using namespace std;
5.
6. int main()
7. {
8. // membuat element vector menjadi 1,2,3,4,5,6,7,8,9,10
9. vector<int> contoh;
10. contoh.push_back(1);
11. contoh.push_back(2);
12. contoh.push_back(3);
13. contoh.push_back(4);
14. contoh.push_back(5);
15. contoh.push_back(6);
16. contoh.push_back(7);
17. contoh.push_back(8);
18. contoh.push_back(9);
19. contoh.push_back(10);
20.
21. contoh.clear();
22. // element vector sudah hilang dihapus
23.
24. // menampilkan output layar..
25. for (auto it = contoh.begin(); it != contoh.end(); ++it)
26. cout << ' ' << *it;
27. return 0;
28. }

2. Mengurutkan Angka Dari Paling Kecil Menggunakan Template.

1. #include <iostream>
2. using namespace std;
3.
4. template <class T>
5. void pengurutan(T a[], int n) {
6. for (int i = 0; i < n - 1; i++)
7. for (int j = n - 1; i < j; j--)
8. if (a[j] < a[j - 1])
9. swap(a[j], a[j - 1]);
10. }
11.
12. // a = array
13.
14. int main() {
15. int a[12] = {10, 50, 30, 40, 20, 25, 4, 1, 6, 5, 8,3};
16. int n = sizeof(a) / sizeof(a[0]);
17.
18. //template function dari yang paling kecil
19. pengurutan(a, 12);
20.
21. cout << "Mengurutkan : ";
22. for (int i = 0; i < n; i++)
23. cout << a[i] << " ";

7
24. cout << endl;
25.
26. return 0;
27. }

nah disini membuat penerapan pengurutan angka dari paling kecil hingga tertinggi
menggunakan metode template.

Tetap menggunakan template <class T>

Tetapi dipadukan dengan fungsi bubble short seperti biasanya 😊 jadi template fleksisbel bisa
dipadukan dengan manapun.

ARRAY
Array atau array adalah variabel yang memiliki serangkaian elemen jenis data tipe yang
sama. Elemen ini dirakit di memori yang berdekatan dengan elemen lain. Konsep ini mirip
dengan struct dan Class yang dapat berupa kumpulan variabel, perbedaannya dengan
mereka adalah array adalah kumpulan variabel dengan satu Identifier dan satu tipe data
yang sama dan dalam hal array Group/kumpulan-kumpulan variabel disebut juga elemen.
Bentuk penulisannya adalah:
tipeData identifier[ukuran];

contoh
double a[5];

untuk mendirikan suatu variabel array sama seperti mendirikan sebuah variabel biasa yang
dimana membutuhkan juga : tipe data, identifier, dan titik koma. Untuk mengubah variabel

8
biasanya menjadi variabel array adalah dengan menambahkan operator subscript ( [] )
untuk memasukan ukurannya.

Initializing Arrays
Anda dapat menginisialisasi elemen array C++ baik satu per satu atau menggunakan satu
pernyataan sebagai berikut
double a[5] = {1000.0, 2.0, 3.4, 17.0, 50.0};

Jumlah nilai antara tanda kurung {} tidak dapat lebih besar dari jumlah elemen yang kita
nyatakan untuk larik antara kurung siku []. Berikut ini adalah contoh untuk menetapkan satu
elemen array, mungkin sama kayak sebelumnya.
double balance[] = {1000.0, 2.0, 3.4, 17.0, 50.0};

Pernyataan di atas menetapkan elemen nomor 5 dalam nilai array 50,0. Array dengan indeks
ke-4 akan menjadi 5, yaitu elemen terakhir karena semua array memiliki 0 sebagai indeks
elemen pertama mereka yang juga disebut indeks dasar.
Accessing Array Elements
Elemen diakses dengan mengindeks nama array. Ini dilakukan dengan menempatkan indeks
elemen di dalam [] setelah nama array. Sebagai contoh
double salary = balance[9];

List
Lists adalah wadah urutan yang memungkinkan alokasi memori yang tidak berdekatan.
Dibandingkan dengan vektor, daftar memiliki traversal lambat, tetapi begitu posisi telah
ditemukan, penyisipan dan penghapusan cepat. Biasanya, ketika kita mengatakan Daftar,
maka berbicara tentang daftar yang ditautkan dua kali lipat. Untuk menerapkan daftar
tertaut tunggal, kami menggunakan daftar maju.
Fungsi yang digunakan dengan LIST:
-front () - Mengembalikan nilai elemen pertama dalam daftar.
-back () - Mengembalikan nilai elemen terakhir dalam daftar.
-push_front (g) - Menambahkan elemen baru ‘g’ di awal daftar.
-push_back (g) - Menambahkan elemen baru ‘g’ di akhir daftar.
-pop_front () - Menghapus elemen pertama dari daftar, dan mengurangi ukuran daftar
sebanyak 1.
-pop_back () - Menghapus elemen terakhir dari daftar, dan mengurangi ukuran daftar
sebanyak 1

9
-list :: begin () dan list :: end () dalam fungsi C ++ STL– begin () mengembalikan sebuah
iterator yang menunjuk ke elemen pertama dari daftar
fungsi -end () - end () mengembalikan sebuah iterator yang menunjuk ke elemen terakhir
teoretis yang mengikuti elemen terakhir.
-daftar fungsi rbegin () dan rend () di C ++ STL– rbegin () mengembalikan iterator terbalik
yang menunjuk ke elemen terakhir dari daftar. rend () mengembalikan iterator terbalik yang
menunjuk ke posisi sebelum awal daftar.
-list cbegin () dan cend () berfungsi dalam C ++ STL– cbegin () mengembalikan iterator akses
acak konstan yang menunjuk ke awal -list. cend () mengembalikan iterator akses acak
konstan yang menunjuk ke akhir daftar.
-daftar fungsi crbegin () dan crend () dalam C ++ STL– crbegin () mengembalikan iterator
terbalik konstan yang menunjuk ke elemen terakhir dari daftar yaitu membalikkan awal
wadah. crend () mengembalikan iterator terbalik konstan yang menunjuk ke elemen teoretis
sebelum elemen pertama dalam daftar yaitu ujung belakang daftar.
-empty () - Mengembalikan apakah daftar kosong (1) atau tidak (0).
-insert () - Menyisipkan elemen baru dalam daftar sebelum elemen pada posisi yang
ditentukan.
-erase () - Menghapus satu elemen atau serangkaian elemen dari daftar.
-assign () - Menetapkan elemen baru ke daftar dengan mengganti elemen saat ini dan
mengubah ukuran daftar.
-remove () - Menghapus semua elemen dari daftar, yang sama dengan elemen yang
diberikan.
list :: remove_if () dalam C ++ STL– Digunakan untuk menghapus semua nilai dari daftar
yang sesuai dengan predikat atau ketentuan yang diberikan sebagai parameter pada fungsi.
reverse () - Membalik daftar.
-size () - Mengembalikan jumlah elemen dalam daftar.
-list resize () function dalam C ++ STL– Digunakan untuk mengubah ukuran kontainer daftar.
-sort () - Mengurutkan daftar dalam urutan yang meningkat.
-mendaftar max_size () berfungsi dalam C ++ STL– Mengembalikan jumlah maksimum
elemen yang bisa disimpan oleh wadah daftar.
-unique() di C ++ STL– Menghapus semua elemen duplikat berturut-turut dari daftar.
-list :: emplace_front () dan list :: emplace_back () dalam fungsi C ++ STL– ------------------
emplace_front () digunakan untuk menyisipkan elemen baru ke dalam daftar wadah,
elemen baru ditambahkan ke awal daftar. ----------- fungsi emplace_back () digunakan untuk

10
menyisipkan elemen baru ke dalam daftar kontainer, elemen baru ditambahkan ke akhir
daftar.
-list :: clear () dalam fungsi C ++ STL– clear () digunakan untuk menghapus semua elemen
kontainer daftar, sehingga membuatnya berukuran 0.
-list :: operator = dalam C ++ STL– Operator ini digunakan untuk menetapkan konten baru
ke wadah dengan mengganti konten yang ada.
-list :: swap () di C ++ STL– Fungsi ini digunakan untuk menukar konten dari satu daftar
dengan daftar lain dengan jenis dan ukuran yang sama.
-list splice() dalam C ++ STL– Digunakan untuk mentransfer elemen dari satu daftar ke yang
lain.
- list merge() dalam C ++ STL– Menggabungkan dua daftar diurutkan menjadi satu
-list emplace() function di C ++ STL– Memperpanjang daftar dengan menyisipkan elemen
baru pada posisi tertentu.
Lalu apasih beda vector dan array di C++?
Perbedaannya ada di konsep yang kita sebut abstraksi.
Dengan larik (array), kita bertanggung jawab dengan kehadiran larik tsb. Larik termasuk tipe
data primitif, tapi tipe data paling sederhana dan dasar. Kamu harus mengatur sendiri
ukuran larik-nya, lokasi, dan tipe data apa yang bisa di terima. Saat mengubah isinya, kamu
harus melakukannya sendiri. Saat menghapus isinya, juga harus melakukannya sendiri. Saat
menghitung panjangnya, harus melakukannya sendiri. Larik bisa digunakan untuk
menyimpan struktur data apapun yang mau karena larik termasuk struktur data dasar, (dan
kamu harus melakukannya sendiri).
Sedangkan vektor (vector), adalah tipe data abstraksi. Vektor memiliki fungsi bawaan yang
bisa kamu gunakan untuk keperluan yang sering dilakukan, seperti menghitung ukuran,
mengganti ukuran, mengganti unsur, mengganti tipe data unsur, mencari unsur, membalik
urutan, mengopi isi, dan sebagainya. Semua fungsinya sudah ditulis dan kamu tinggal pakai
saja (dibandingkan dengan larik yang harus kamu tulis dulu). Di belakangnya, vektor juga
menggunakan larik, namun disembunyikan dan tidak kita akses secara langsung. Ini yang
dinamakan abstraksi.

List dengan menggunakan Array

ArrayList

ArrayLists adalah jenis koleksi yang dapat digunakan untuk menyimpan berbagai jenis data. Ini berarti
dua kelas yang berbeda seperti string dan integer dapat disimpan bersama dalam satu koleksi. Ada
beberapa kelebihan dan kekurangan untuk ArrayLists mereka diimplementasikan menjadi koleksi yang
lebih fleksibel daripada array..

11
ArrayList adalah daftar fleksibel objek yang ukurannya dapat diubah secara dinamis dan diakses
melalui indeks bilangan bulat. Hal ini dapat menyimpan banyak jenis variabel kecuali untuk multi-
dimensi array. Ini termasuk nilai null. Sayangnya, ArrayLists tidak efisien dibandingkan dengan array
dan daftar generik. ArrayLists tidak jenis-aman, dan oleh karena itu harus kotak, dan unboxed
sebaliknya kesalahan saat runtime akan terjadi. ArrayLists tidak thread-aman secara default.

Karena kurangnya keamanan jenis dan kinerja yang buruk ketika menggunakan ArrayLists, mereka
telah diganti dengan menggunakan list<T> atau list<Object>. list Generik memiliki semua manfaat
yang sama dengan ArrayLists. Daftar Generik adalah tipe-aman dan karena ini mereka lebih dapat
diandalkan, lebih bebas bug dan direkomendasikan untuk digunakan.

ArrayList C++ Properties:-

Capacity — The capacity property represents how many elements the ArrayList can store.

Count — The count property represents how many elements the ArrayList currently has.

IsFixedSize — Does the ArrayList have a fixed size?

IsReadOnly — Is the ArrayList readonly?

IsSynchronized — Is the ArrayList thread-safe?

Item[Integer] — The element of the ArrayList given at the index.

SyncRoot — It is used to store a synchronized value of the ArrayList.

ArrayList C++ Methods:


Adaptor (IList ^) - Bungkus objek dengan antarmuka IList ^ sebagai ArrayList.

Tambah (Objek ^) - Tambahkan nilai ke akhir ArrayList.

AddRange (ICollection ^) - Menambahkan serangkaian elemen ke akhir ArrayList.

BinarySearch (Object ^) - Urutkan ArrayList untuk Objek.

Clear () - Kosongkan ArrayList.

Clone () - Gandakan ArrayList.

Contains (Object ^) - Periksa apakah ArrayList memiliki elemen yang diberikan.

CopyTo (Array ^) - Melemparkan ArrayList ke dalam Array.

Equals- (Object ^) - Periksa apakah ArrayList sama dengan ArrayList lain.

Finalisasi () - Membebaskan kelebihan sumber daya yang digunakan oleh ArrayList.

12
FixedSize () - Mengembalikan ArrayList dengan ukuran tetap.

GetEnumerator () - Melemparkan ArrayList sebagai Enumerator.

GetHashCode () - Hash the ArrayList.

/**/
GetRange (Int, Int) - Mengembalikan elemen yang dimulai pada indeks pertama dan berakhir pada
indeks kedua yang disediakan.

GetType () - Mengembalikan tipe ArrayList.

IndexOf (Objek ^) - Mengembalikan indeks elemen yang berisi objek yang diberikan.

Sisipkan (Int, Objek ^) - Menambahkan elemen ke daftar pada indeks yang diberikan.

InsertRange (Int, ICollection ^) - Menambahkan serangkaian elemen pada indeks yang diberikan.

LastIndexOf (Obyek ^) - Mengembalikan indeks kemunculan terakhir suatu objek.

MemberwiseClone () - Membuat salinan objek kelas dasar.

ReadOnly (ArrayList ^) - Mengembalikan ArrayList sebagai hanya-baca.

Hapus (Objek ^) - Menghapus elemen saat pertama kali ditemukan.

RemoveAt (Int) - Menghapus elemen pada indeks yang diberikan.

RemoveRange (Int, Int) - Menghapus elemen yang dimulai pada indeks pertama dan berakhir pada
indeks terakhir.

Ulangi (Objek ^, Int) - Buat ArrayList baru dengan nilai yang mengulangi dirinya sendiri jumlah int kali.

Reverse () - Membalik urutan elemen di ArrayList.

SetRange (Int, ICollection ^) - Salin elemen koleksi ke dalam ArrayList pada indeks yang diberikan.

Sortir () - Mengurutkan elemen-elemen dari ArrayList berdasarkan urutan alfabet.

Disinkronkan (ArrayList ^) - Mengembalikan versi ArrayList yang aman-utas.

ToArray () - Mengembalikan ArrayList sebagai array Object,

ToString () - Mengembalikan tipe ArrayList sebagai string.

TrimToSize () - Mengurangi kapasitas ke jumlah elemen di ArrayList


http://www.hellgeeks.com/arraylist-in-c-with-examples/

13
List dengan menggunakan Vector
std::vector vs std::list

Insertion and Deletion

Penyisipan dan Penghapusan dalam list sangat efisien dibandingkan dengan vektor karena untuk
memasukkan elemen dalam lisat di awal, akhir atau tengah, secara internal hanya beberapa pointer
yang ditukar.

Padahal, dalam penyisipan dan penghapusan vektor saat start atau tengah akan membuat semua
elemen bergeser satu. Juga, jika ada memori bersebelahan yang tidak mencukupi dalam vektor pada
saat penyisipan, maka memori bersebelahan baru akan dialokasikan dan semua elemen akan disalin
di sana. penyisipan dan penghapusan dalam list jauh lebih efisien daripada vector.

Random Access

Karena list diimplementasikan secara internal sebagai daftar tertaut ganda, maka tidak ada akses acak
yang dimungkinkan dalam list. Artinya, untuk mengakses elemen ke-15 dalam list kita perlu
mengulangi melalui 14 elemen pertama dalam list satu per satu.

Sedangkan, vektor menyimpan elemen di lokasi memori yang berdekatan seperti array. Oleh karena
itu, dalam akses acak vektor adalah mungkin, kita dapat langsung mengakses elemen ke-15 dalam
vektor menggunakan operator [] yaitu

std::vector<int> vec(20);
vec[15] = 10
kita tidak bisa menggunakan STD:: List dengan beberapa algoritma STL yang membutuhkan akses
operator acak seperti STD:: Sort.

Iterator Invalidation

Menghapus atau Memasukkan elemen dalam list tidak membatalkan iterator apa pun karena selama
penyisipan dan penghapusan tidak ada elemen yang dipindahkan dari posisinya, hanya beberapa
pointer yang diubah. Padahal, dalam untuk penyisipan dan penghapusan vektor dapat membatalkan
iterator.

Special Member functions

Karena std::list tidak menyediakan akses acak, ada banyak algoritma STL yang menggunakan Random
Access Iterators tidak dapat digunakan dengan Daftar. Karenanya std::list menyediakan beberapa
fungsi tambahan untuk Menyortir, Menyambungkan, Menghapus elemen, dan mengidentifikasi
elemen unik.

Vektor menyediakan akses acak dan karenanya dapat digunakan dengan algoritma STL yang
menggunakan Random Access Iterators.

14
List dari STL C++

List adalah wadah urutan yang memungkinkan alokasi memori yang tidak berdekatan. Dibandingkan
dengan vektor, daftar memiliki traversal lambat, tetapi begitu posisi telah ditemukan, penyisipan dan
penghapusan cepat. Biasanya, ketika kita mengatakan list, kita berbicara tentang list yang ditautkan
dua kali lipat. Untuk menerapkan list tertaut tunggal, kita menggunakan forward list.

Mereka sangat mirip dengan forward_list: Perbedaan utama adalah bahwa objek forward_list adalah
daftar single-linked, dan dengan demikian mereka hanya dapat diulang ke depan, dengan imbalan
menjadi lebih kecil dan lebih efisien.

Dibandingkan dengan wadah urutan standar dasar lainnya (array, vektor, dan deque), daftar
umumnya berfungsi lebih baik dalam menyisipkan, mengekstraksi, dan memindahkan elemen dalam
posisi apa pun dalam wadah yang telah diperoleh iterator, dan oleh karena itu juga dalam algoritma
yang membuat penggunaan intensif ini, seperti algoritma pengurutan.

--------------------------------------------------------------------------------------------------------------------------------------

Contoh Soal Dan Pembahasannya


1. List stl

1. #include <iostream>
2. #include <list>
3. #include <iterator>
4. using namespace std;
5.
6. //function menampilkan element pada list
7. void tampilkanlist(list <int> g)
8. {
9. list <int> :: iterator it;
10. for(it = g.begin(); it != g.end(); ++it)
11. cout << '\t' << *it;
12. cout << '\n';
13. }
14.
15. int main()
16. {
17.
18. list <int> padalist1, padalist2;
19.
20.
21. for (int i = 0; i < 10; ++i)
22. {
23. padalist1.push_back(i * 2);
24. padalist2.push_front(i * 3);
25. }
26. cout<< "TAMPILKAN LIST";
27. cout << "\n\nList 1 (padalist1) : ";
28. tampilkanlist(padalist1);
29.

15
30. cout << "\nList 2 (padalist2) : ";
31. tampilkanlist(padalist2);
32.
33. cout << "\npadalist1.front() : " << padalist1.front();
34. cout << "\npadalist1.back() : " << padalist1.back();
35.
36. //mengampil list element setelah 0 pada list1
37. cout << "\npadalist1.pop_front() : ";
38. padalist1.pop_front();
39. tampilkanlist(padalist1);
40. //menampilkan urutan list dimulai dari belakang pada list 2
41. cout << "\npadalist2.pop_back() : ";
42. padalist2.pop_back();
43. tampilkanlist(padalist2);
44. //menampilkan urutan list dimulai dari belakang pada list 1
45. cout << "\npadalist1.reverse() : ";
46. padalist1.reverse();
47. tampilkanlist(padalist1);
48. //menampilkan urutan list dimulai dari depan pada list 2
49. cout << "\npadalist2.sort(): ";
50. padalist2.sort();
51. tampilkanlist(padalist2);
52.
53. return 0;
54.
55. }

Pada line 6-13, itu berfungsi menapilkan elemen list yang akan kita gunakan

Sedang kan line 18-25 ,itu berfungsi untuk memasukan elemen yang akan digunakan. kita
menggunakan 0 <10 jadi menampilan nilai dari 0<10. Pada (padalist1) kita menggunakan *2 artinya
kita mengambil nilai dari 0<10 dan jarak setiap elemen berjarak seilisih 2 (hanya menampilkan elemen
sebanyak 10elemen saja , dan 0 ikut dalam situ) 0 2 4 6 8 10 12 14 16 18,
Dan padalist2 berselisih 3.

Pada line 36-39, mengampil list element setelah 0 pada list1.

Pada line 40-43, menampilkan urutan elemen list dimulai dari belakang pada list 2.

Pada line 44-47, menampilkan urutan elemen list dimulai dari belakang pada list 1

18 16 14 12 10 8 6 4 2.

Pada line 48-51, menampilkan urutan list dimulai dari depan padalist 2,

3 6 9 12 15 18 21 24 27.

2. Arraylist
3. #include <iostream>
4.
5. using namespace std;
6.
7. int main()
8. {
9. int usiasaudara[5] = {6,1,24,30,22};
10. int i = 0;
11. int usiatua = 0;
12.
13. for (int j = 0; j < usiasaudara[i]; ++i)
14. {
15. if (usiatua < usiasaudara[i])
16. {

16
17. usiatua = usiasaudara[i];
18. }
19. else
20. {
21. // do nothing
22. }
23. }
24.
25. cout << "usia tua adalah: " + usiatua << endl;
26.
27. system("pause");
28. }

Saya mencoba untuk memecahkan algoritma menemukan dan menampilkan usia tertua dari
saudara saya dalam array.
Tetapi disitu belom bisa tertampilkan apa2 loh… ,untuk menampilkan usia yang termuda
kita harus mengganti sintak di nomor 23:
Dari

cout << "usia tua adalah: " + usiatua << endl;


menjadi

cout << "usia tua adalah" << usiatua << endl;

why?? Karena menambahkan string dan int, di C ++ tidak secara otomatis melakukan cast ke
int.
setelah diubah codenya menjadi begini:

1. #include <iostream>
2.
3. using namespace std;
4.
5. int main()
6. {
7. int usiasaudara[5] = {6,1,24,30,22};
8. int i = 0;
9. int usiatua = 0;
10.
11. for (int j = 0; j < usiasaudara[i]; ++i)
12. {
13. if (usiatua < usiasaudara[i])
14. {
15. usiatua = usiasaudara[i];
16. }
17. else
18. {
19. // do nothing
20. }
21. }
22.
23. cout << "usia tua adalah: " << usiatua << endl;
24.
25. system("pause");
26. }

17
--------------------------------------------------------------------------------------------------------------------------
Soal Unguided Program SOAL 3:

1. #include<iostream>
2.
3. #define SIZE 100
4.
5. using namespace std;
6.
7. struct wonderwarehouse
8. {
9. int data;
10. struct wonderwarehouse *next;
11. }*f=NULL,*r=NULL,*n,*temp,*temp1;
12.
13. void wonderwarehouse_ins();
14. void wonderwarehouse_del();
15. void wonderwarehouse_peep();
16. void wonderwarehouse_chg();
17. void wonderwarehouse_dis();
18.
19. int main()
20. {
21. cout<<"WONDER WAREHOUSE";
22. int ch;
23. do
24. {
25.
26. cout<<"\n\nMasukan pilihan: ";
27. cout<<"\n1. Tambah Barang Ke Gudang\n2. Ambil barang\n3. Tampil Barang\n4. Pin
dah barang\n5. Exit\n\nWONDER WAREHOUSE ";
28. cin>>ch;
29. switch(ch)
30. {
31. case 1:
32. wonderwarehouse_ins();
33. wonderwarehouse_dis();
34. break;
35. case 2:
36. wonderwarehouse_del();
37. break;
38. case 3:
39. wonderwarehouse_dis();
40. break;
41. case 4:
42. wonderwarehouse_chg();
43. break;

18
44. case 5:
45. break;
46. default:
47. cout<<"\n\nSalah masukan.";
48. }
49. }while(ch!=6);
50. return 0;
51. }
52.
53. void wonderwarehouse_ins()
54. {
55. n=new wonderwarehouse[sizeof(wonderwarehouse)];
56. cout<<"\nMasukan barang: ";
57. cin>>n->data;
58. if(f==NULL)
59. {
60. f=n;
61. }
62. else
63. {
64. r->next=n;
65. }
66. r=n;
67. r->next=f;
68. }
69.
70. void wonderwarehouse_del()
71. {
72. int x;
73. temp=f;
74. if(f==NULL)
75. {
76. cout<<"\nBarang Tidak Tersedia";
77. }
78. else
79. {
80. if(f==r)
81. {
82. x=f->data;
83. delete(temp);
84. f=NULL;
85. r=NULL;
86. }
87. else
88. {
89. x=temp->data;
90. f=f->next;
91. r->next=f;
92. delete(temp);
93. }
94. cout<<"\nElement "<<x<<" telah diambil";
95. wonderwarehouse_dis();
96. }
97. }
98.
99. void wonderwarehouse_peep()
100. {
101. int c=1,pos;
102. temp=f;
103. temp1=NULL;
104. cout<<"\nMasuan Posisi: ";
105. cin>>pos;
106. if(f==NULL)
107. {
108. cout<<"\nbarang Tidak Tersedia";
109. }

19
110. else
111. {
112. while(temp!=temp1)
113. {
114. if(c==pos)
115. {
116. cout<<"\nThe Element at Position "<<pos<<" is "<<temp->data;
117. break;
118. }
119. temp=temp->next;
120. temp1=f;
121. c++;
122. }
123. wonderwarehouse_dis();
124. }
125. }
126.
127. void wonderwarehouse_chg()
128. {
129. int c=1,pos,ne;
130. temp=f;
131. temp1=NULL;
132. cout<<"\nposisi barang: ";
133. cin>>pos;
134. cout<<"\nEnter the New Value: ";
135. cin>>ne;
136. if(f==NULL)
137. {
138. cout<<"\nBarang Tidak Tersedia";
139. }
140. else
141. {
142. while(temp!=temp1)
143. {
144. if(c==pos)
145. {
146. temp->data=ne;
147. break;
148. }
149. temp=temp->next;
150. temp1=f;
151. c++;
152. }
153. wonderwarehouse_dis();
154. }
155. }
156.
157. void wonderwarehouse_dis()
158. {
159. temp=f;
160. temp1=NULL;
161. if(f==NULL)
162. {
163. cout<<"\n\nBarang Tidak Tersedia";
164. }
165. else
166. {
167. cout<<"\n\n\n\n";
168. while(temp!=temp1)
169. {
170. cout<<temp->data<<" ";
171. temp=temp->next;
172. temp1=f;
173. }
174. }
175. }

20
DAFTAR PUSTAKA
http://www.hellgeeks.com/arraylist-in-c-with-examples/

https://stackoverflow.com/questions/1905417/array-vs-vector-vs-list

dan modul dari kelas.

#Mohon Maaf Kalau masih ada kesalahan menyusun laporan 😊

21

Anda mungkin juga menyukai