MAKALAH MENGUPAS TENTANG ISI HEADER LIST.H
Disusun Oleh:
KEMENTRIAN PENDIDIKAN NASIONAL UNIVERSITAS JENDERAL SOEDIRMAN FAKULTAS SAINS & TEKNIK JURUSAN TEKNIK PRODI TEKNIK ELEKTRO 2011/2012
KATA PENGANTAR
Puja dan Puji syukur atas kehadirat Tuhan yang maha esa, karena dengan rahmat dan karunia-Nya kami masih diberi kesempatan untuk menyelesaikan makalah ini. Tidak lupa saya ucapkan terima kasih kepada dosen pembimbing dan dosen pengampu mata kuliah ini, serta teman-teman yang telah memberikan dukungan dalam menyelesaikan makalah ini. Penulis menyadari bahwa dalam penulisan makalah ini masih banyak kekurangan, oleh sebab itu kami sangat mengharapkan kritik dan saran yang membangun. Dan semoga dengan selesainya makalah ini dapat bermanfaat bagi pembaca dan teman-teman sekalian. Amin...
Purbalingga, 21 Maret 2012
Penulis
DAFTAR ISI
KATA PENGANTAR DAFTAR ISI BAB 1 . PENDAHULUAN BAB 2 . PEMBAHASAN 2.1 Pengertian list.h 2.2 Struktur Data dalam List.h 2.2.1. Linked List 2.2.2. Circular List 2.2.3. Bidirectio Bidirectional nal list 2.3. Header list.h 2.3.1. list:: assign 2.3.2. list:: back 2.3.3. list:: begin 2.3.4. list:: clear 2.3.5. list:: empty 2.3.6. list:: end 2.3.7. list:: erase 2.3.8. list:: front 2.3.9. list:: get_allocator 2.3.10. list:: menyisipkan 2.3.11. list:: max_size 2.3.12. list:: merge 2.3.13. list:: operator = 2.3.14. list:: pop_back 2.3.15. list:: pop_front 2.3.16. list:: push_back 2.3.17. list:: push_front
2.3.18. . list:: rbegin 2.3.19. list:: remove 2.3.20. list:: remove_if 2.3.21. list:: rend 2.3.22. list:: resize 2.3.23. list:: reverse 2.3.24. list:: ukuran 2.3.25. list:: sort 2.3.26. list:: sambatan 2.3.27. list:: swap 2.3.28. list:: unik BAB 3. PENUTUP 3.1. Kesimpulan
BAB I PENDAHULUAN
1.1 File Header
Sejauh ini kita telah membahas tentang cara-cara pembatasan' kembali (restricting) akses kedalam obyek program pada beberapa file kode sumber. File header e merupakan file kode sumber, secara konvensional memiliki ekstensi ".h," dan sering disebut file titik h (dot-h file) dan dipakai dalam modul compile C dengan menggunakan direktis #incIud preprosessor. File header mempunyai dua keuntungan bagi pemakaian informasi bersama-sama diantara modul compile. Yang pertama, file ini meyakinkan bahwa file sumber memiliki informasi yang sama tepat. Sebagai contoh, bila definisi tipe dan macro serta deklarasi extern muncul dalam file header yang umum daripada dalam file kode sumber masing-masing secara terpisah maka tidak akan ada kemungkinan bahwa file sumber tersebut akan menggunakan definisi atau deklarasi yang tidak konsisten. Kedua, dengan menempatkan definisi dan deklarasi yang umum dalam file header dapat membuat pengembangan, perawatan serta penempatan lebih mudah dan lebih sedikit tetjadi kesalahan karena kita hanya perlu membuat perubahan dalam satu tempat.
BAB II PEMBAHASAN
2.1. Pengertian List
List adalah salah satu tipe struktur data, terdiri dari beberapa objek yang terkait oleh pointer. Kita bisa melakukan operasi penambahan elemen, penghapusan elemen, dan pencarian dalam list. Pada bagian ini kita akan membangun objek bertipe ElmtList yang didefinisikan sebagai berikut: class ElmtList { int info; //berisi informasi ElmtList next; //pointer ke objek berikutnya }
ElmtList tersebut bisa dikatakan sebagai node. Istilah node sering digunakan untuk menunjukkan salah satu dari beberapa objek dalam sebuah linked data struktur (untuk selanjutnya kita sebut List). Objek bertipe ElmtList bisa dikaitkan satu sama. Node terakhir (elemen list yang terakhir) bisa diidentifikasi dengan variable next milik object terakhir tersebut yang memiliki nilai null atau tidak menunjuk ke node yang lain.
Pada awal pembentukan list, hanya ada satu element (dengan next bernilai null), lalu untuk menambahkan element maka diperlukan operasi penyisipan elemen. Penyisipan bisa dilakukan dengan beberapa cara: - Insert first - Insert after - Insert last Penyisipan dengan insert first akan menambahkan elemen baru yang berada sebelum elemen pertama (elemen pertama tergeser menjadi kedua). Jadi jika kita melakukan insert first maka akan ditambahkan element baru sebelum elemen pertama.
Penyisipan dengan insert after akan menambahkan elemen baru setelah suatu elemen, dengan insert after kita bisa menambahkan elemen baru di tengah list.
Dalam unit 1-1 ini Anda Anda akan melihat sebuah list sederhana terbentuk. Dengan menggunakan class ElmtList sebagai objek yang menjadi elemen list. Berikut ini adalah kode sumber ElmtList yang akan Anda gunakan, ketikanlah di teks editor Anda :
[ 1 ] public class ElmtList { [ 2 ] protected int info; [ 3 ] protected ElmtList next; [ 4 ] public ElmtList(int i, ElmtList next) { [ 5 ] this.info = i; [ 6 ] this.next = next; [7]} [ 8 ] public int getInfo(){ [ 9 ] return info; [ 10 ] } [ 11 ] }
Ketikkan sebelas baris kode di atas dan simpanlah dengan nama “ElmtList.java”. (Ingat jangan tulis nomor baris ! ) Pada baris ke-1 terlihat ada access specifier public yang mengandung arti bahwa class ElmtList ini dapat diakses dari class lainnya.
Pada baris ke-2 dan ke-3 terlihat ada access specifier protected ini hanya dapat diakses oleh member dari class ElmtList, member dari class turunannya, dan member dari class lain yang berada dalam package yang sama. Baris ke-4 sampai dengan ke-7 adalah konstruktor class ElmtList. Bentuk konstruktor sama dengan method, tetapi perbedaan utamanya adalah konstruktor harus memiliki nama yang sama dengan nama class dan tidak memiliki nilai kembalian apapun bahkan void sekalipun(lihat baris ke-4). Baris ke-8 sampai ke-10 adalah sebuah method milik ElmtList yang akan mengembalikan nilai integer. Method ini berfungsi untuk mengambil nilai yang ada di variable info. Kenapa tidak mengakses variabel info secara langsung saja? Dalam Object Oriented Programming1, variabel dalam masing-masing class benar-benar dibuat terisolasi dan terlindungi untuk mencegah terjadinya perubahan nilai variabel baik sengaja atau tidak disengaja yang tidak diinginkan (sekarang Anda mengerti kenapa variabel info dan next diberi access specifier protected?). Dengan melindungi akses terhadap variabel tersebut,
Dalam Java ada dua cara untuk menyatakan list, yaitu menggunakan array dinamis atau linked list. Kedua cara ini tercakup dalam kumpulan class java.util.ArrayList and java.util.LinkedList. ArrayList menyimpan obyek dalam array sedangkan LinkedList menyimpan obyek dalam node-node yang saling terkait oleh pointer.
Contoh operasi-operasi atau metode dalam list: 1. list.get(index): digunakan untuk mengambil obyek dalam posisi index. 2. list.set(index,obj): digunakan untuk menyimpan obyek di posisi index, jika posisi tersebut sebelumnya sudah terisi maka akan ditimpa. 3. list.add(index,obj): digunakan untuk menyisipkan obyek di posisi index. 4. list.remove(index): digunakan untuk menghapus obyek pada posisi index. 5. list.indexOf(obj): digunakan untuk mengetahui di mana posisi sebuah obyek dalam list.
Metode-metode di atas berlaku baik untuk ArrayList maupun LinkedList. Contoh operasi berikut ini hanya berlaku khusus untuk LinkedList: 1. linkedlist.getFirst(): digunakan untuk mengambil obyek pertama dalam list. 2. linkedlist.getLast(): digunakan untuk mengambil obyek terakhir dalam list.
3. linkedlist.removeFirst(): digunakan untuk menghapus obyek pertama dalam list. 4. linkedlist.removeLast(): digunakan untuk menghapus obyek terakhir dalam list. 5. linkedlist.addFirst(obj): digunakan untuk menambah obyek di awal list. 6. linkedlist.addLast(obj): digunakan untuk menambah obyek di akhir list.
Berikut ini adalah contoh implementasi list untuk menambahkan data pada list, tetapi diinginkan supaya list yang sudah ada tetap dalam kondisi terurut naik. static void orderedInsert(List list, Comparable newItem) { // Precondition: The items in list are sorted into ascending // order, according to the compareTo method. // newitem.compareTo(item) must be defined for // each item in the list. // Postcondition: newItem has been added to the list in its // correct position, so that the list is still // sorted into ascending order. ListIterator iter = list.listIterator(); // Move the iterator so that it points to the position where // newItem should be inserted into the list. If newItem is // bigger than all the items in the list, then the while loop // will end when iter.hasNext() becomes false, that is, when // the iterator has reached the end of the list. while (iter.hasNext()) { Object item = iter.next(); if (newItem.compareTo(item) <= 0) { // newItem should come BEFORE item in the list. // Move the iterator back one space so that // it points to the correct insertion point, // and end the loop. iter.previous(); break; } }
iter.add(newItem); }
2.2 Struktur Data dalam List.h 2.2.1. Linked List
Linked adalah koleksi obyek heterogen dengan sifat setiap obyek (kecuali obyek terakhir) mempunyai penerus dan setiap obyek (kecuali obyek pertama) mempunyai pendahulu. Salah satu penggunaan pointer adalah untuk membuat linked list atau senarai berantai. Linked list sendiri dapat diartikan sebagai sekumpulan komponen yang saling berhubungan (berantai) dengan bantuan pointer. Perhatikan ilustrasi berikut untuk lebih jelasnya. Next next Next next null Gambar 2.1 Beberapa obyek yang saling terhubung membentuk linked list Masing-masing komponen disebut sebagai simpul atau node. Setiap simpul terbagi menjadi dua bagian, yaitu bagian data dan bagian penyambung. Bagian data berisi data yang akan disimpan dan diolah. Sedangkan bagian penyambung berisi alamat simpul berikutnya. Fungsi-fungsi yang dapat dipakai dalam operasi linked list adalah: 1. Fungsi menambah simpul di belakang. Langkah-langkahnya: a. membuat simpul baru kemudian diisi info baru. b. simpul paling akhir dihubungkan ke simpul baru. c. penunjuk pointer akhir diarahkan ke simpul simpul baru. 2. Fungsi menambah simpul di depan. Langkah-langkahnya: a. membuat simpul baru, kemudian diisi info baru. b. simpul baru dihubungkan ke simpul awal. c. penunjuk pointer awal diarahkan ke simpul baru. 3. Fungsi menyisipkan simpul di tengah. Langkah-langkahnya: a. membuat simpul bantu, kemudian diisi info baru. b. menentukan di mana simpul baru akan ditambahkan, yaitu dengan menempatkan pointer bantu pada suatu tempat. c. pointer baru dihubungkan ke simpul setelah simpul yang ditunjuk oleh pointer bantu, kemudian penunjuk pointer bantu diarahkan ke simpul baru. 4. Fungsi menghapus simpul di depan. Langkah-langkahnya: a. simpul bantu diarahkan pada simpul awal.
b. simpul awal diarahkan ke simpul berikutnya. c. menghapus simpul bantu. 5. Fungsi menghapus simpul di tengah. Langkah-langkahnya: a. meletakkan pointer bantu di sebelah kiri simpul yang akan dihapus. b. simpul yang akan dihapus ditunjuk oleh pointer lain, misalnya pointer hapus. c. pointer bantu diarahkan ke simpul yang ditunjuk oleh hapus, kemudian simpul hapus dihapus. 6. Fungsi menghapus simpul di belakang. Langkah-langkahnya: a. meletakkan pointer bantu di sebelah kiri simpul yang akan dihapus. b. simpul yang akan dihapus ditunjuk oleh pointer lain, misalnya pointer hapus. c. pointer bantu, diarahkan ke simpul yang ditunjuk oleh hapus, kemudian simpul hapus dihapus. 7. Fungsi mencetak list dengan membaca maju. Langkah-langkahnya: a. mengatur agar pointer bantu menunjuk simpul yang ditunjuk oleh pointer awal. b. setelah isi simpul dibaca dan dicetak, pointer bantu digerakkan ke kanan untuk membaca simpul berikutnya. c. proses ini diulang sampai pointer bantu sama dengan pointer akhir. 8. Fungsi mencetak list dengan membaca mundur. Langkah-langkahnya: a. mengatur agar pointer bantu menunjuk simpul yang ditunjuk oleh pointer akhir. b. setelah pointer bantu menunjuk simpul akhir, baru dicetak. c. proses pencetakan dilanjutkan dengan mencetak isi simpul di sebelah kiri simpul akhir. d. proses selesai jika isi simpul paling awal telah selesai dicetak. 9. Fungsi mencari data pada list. Langkah-langkahnya: a. data yang dicari disimpan dalam suatu variabel, misalkan elemen. b. membuat pointer bantu sama dengan pointer awal. c. isi simpul yang ditunjuk oleh pointer bantu dibandingkan dengan elemen. Jika sama, berarti data yang dicari ditemukan. Jika belum sama, maka pointer bantu dipindahkan ke simpul di sebelah kanannya
dan proses perbandingan diulang. Proses ini diulang sampai data yang dicari ditemukan atau sampai pada simpul akhir.
2.2.2. Circular List
Semua sel dalam list disambungkan dengan pointer, dan sel yang terakhir disambungkan dengan sel pertama • Struktur data berbentuk cincin • Tidak ada sel pertama maupun sel terakhir dalam list, karena setiap sel disambungkan oleh pointer sehingga berbentuk cincin.
struct CELL *ptr, *p; if(ptr != NULL) { p = ptr;
do { printf(“%d¥n”,p->value)
/* tampilkan value pada sel yang ditunjuk oleh p */ p = p->next; } while (p != ptr); // Setelah semua bagian dalam loop dieksekusi, // evaluasilah apakah p!= ptr } Variabel ptr
Circular List memakai head
2.2.3. Bidirectional list
Apa bidirectional list itu?
Cara menambah sel baru
2.3. Header list.h
List urutan semacam wadah Dengan demikian, elemen mereka diperintahkan mengikuti urutan linear. List wadah diimplementasikan sebagai list link ganda; ganda dapat menyimpan list link masingmasing dari mereka mengandung unsur-unsur yang berbeda dan tidak terkait lokasi penyimpanan. Susunan disimpan oleh asosiasi untuk setiap elemen dari sebuah link ke elemen sebelumnya dan link ke elemen berikut ini. Ini memberikan keuntungan sebagai berikut list wadah: •
Efisien penyisipan dan penghapusan unsur-unsur di mana pun di wadah (konstan waktu).
•
Bergerak efisien blok elemen dan unsur-unsur dalam wadah atau bahkan antara berbagai wadah (konstan waktu).
•
Iterasi elemen dalam maju atau terbalik (linear waktu).
Dibandingkan dengan urutan standar dasar wadah (vektor s dan deques), list umumnya tampil lebih baik dalam memasukkan, mengeluarkan dan unsur-unsur yang bergerak dalam posisi apapun dalam wadah, dan karenanya juga dalam algoritma yang membuat penggunaan intensif ini, seperti algoritma sorting. Kelemahan utama dari list s dibandingkan dengan wadah urutan lain ini adalah bahwa mereka tidak memiliki akses langsung ke elemen dengan posisi mereka; Sebagai contoh, untuk mengakses elemen keenam dalam list orang harus iterate dari posisi yang diketahui (seperti awal atau akhir) untuk posisi itu, yang membutuhkan waktu linier dalam jarak antara ini. Mereka juga mengkonsumsi memori tambahan
untuk menyimpan informasi yang terkait untuk menghubungkan setiap elemen (yang mungkin menjadi faktor penting untuk list besar berukuran kecil elemen). Penyimpanan ditangani secara otomatis oleh kelas, list memungkinkan untuk diperluas dan kontrak yang diperlukan. Dalam pelaksanaannya di C + + Standar Perpustakaan Template list template mengambil dua parameter: template < class T, class Allocator = allocator
> class list; Mana parameter template memiliki arti sebagai berikut: •
T: Jenis elemen.
•
Allocator: Jenis objek yang pengalokasi digunakan untuk mendefinisikan alokasi penyimpanan model. Secara default, kelas pengalokasi template untuk tipe T digunakan, yang mendefinisikan alokasi memori yang paling sederhana adalah model dan nilai-independen.
Dalam referensi untuk list fungsi anggota, nama yang sama ini diasumsikan untuk template parameter.
Anggota fungsi : -
(constructor) Buatlah list (fungsi anggota umum)
-
(destructor) List destructor (fungsi anggota umum)
-
operator= Salin wadah konten (fungsi anggota umum)
1. Iterators
- begin Kembali ke awal iterator (fungsi anggota umum) -
End Kembali iterator untuk mengakhiri (fungsi anggota umum)
-
Rbegin Kembali reverse iterator untuk membalikkan awal (fungsi anggota umum)
-
Rend Kembali reverse iterator untuk membalikkan akhir (fungsi anggota umum)
2. Kapasitas
-
empty Menguji apakah wadah kosong (fungsi anggota umum)
-
size Kembali ukuran (fungsi anggota umum)
-
max_size Kembali ukuran maksimum (fungsi anggota umum)
-
resize Ubah ukuran (fungsi anggota umum)
3. Element access
-
front
Mengakses elemen pertama (fungsi anggota umum)
- back Akses elemen terakhir (fungsi anggota umum) 4. Modifiers
-
assign Tetapkan konten baru untuk wadah (fungsi anggota umum)
- push_front Masukkan elemen awal (fungsi anggota umum) - pop_front Hapus elemen pertama (fungsi anggota umum) - push_back Tambahkan elemen pada akhir (fungsi anggota umum) - pop_back Menghapus elemen terakhir (fungsi anggota umum) -
insert Masukkan unsur-unsur (fungsi anggota umum)
-
erase Menghapus elemen (fungsi anggota umum)
-
swap konten (fungsi anggota umum)
-
clear Hapus konten (fungsi anggota umum)
5. Operations
-
splice Pindahkan elemen dari list untuk list (fungsi anggota umum)
-
remove Hapus elemen dengan nilai tertentu (fungsi anggota umum)
-
remove_if Memenuhi unsur Hapus kondisi (member public function template)
-
unique Hapus duplikat nilai (member fungsi)
-
merge Merge list diurutkan (fungsi anggota umum)
-
sort Urut elemen dalam wadah (fungsi anggota umum)
-
reverse Membalik urutan elemen (fungsi anggota umum)
6. Allocator
-
get_allocator Dapatkan pengalokasi (fungsi anggota umum)
2.3.1 list:: assign Assign new content to container : Menetapkan konten baru ke wadah, menjatuhkan semua
unsur yang terkandung dalam wadah objek sebelum panggilan tersebut dan menggantikan mereka dengan yang ditentukan oleh parameter: Pada versi pertama (dengan iterators), isi baru objek wadah adalah salinan yang ada dalam urutan antara pertama dan terakhir (dalam rentang [pertama, terakhir)). Pada versi kedua, konten baru n kali pengulangan salinan unsur u. Parameter : first, last Input iterators ke posisi awal dan akhir secara berurutan. Rentang yang digunakan adalah [pertama, terakhir), yang mencakup semua unsur antara pertama dan terakhir, termasuk elemen ditunjukkan
dengan pertama-tama tetapi tidak ditunjukkan oleh elemen terakhir. Jenis template bisa semua jenis input iterator. n U kali yang diulang untuk membentuk konten baru dari objek. Member type size_type is an unsigned integral type. Anggota jenis unsigned size_type adalah tipe integral. u Nilai yang akan diulang n kali sebagai konten baru dari objek. T adalah kelas pertama template parameter (jenis unsur-unsur yang disimpan dalam wadah list). 2.3.2. list:: back Access last element : Mengembalikan referensi ke elemen terakhir dalam wadah.
Tidak seperti member list:: akhir, yang mengembalikan sebuah iterator hanya melewati elemen ini, fungsi ini mengembalikan referensi langsung. Parameter : tidak ada
2.3.3. list:: begin Return iterator to beginning : Mengembalikan sebuah iterator merujuk pada elemen pertama
dalam list wadah. Parameter : tidak ada Return Value : Sebuah iterator ke awal urutan.
2.3.4. list:: clear Clear content Semua elemen dalam list wadah yang dropped: destructors mereka disebut, dan
kemudian mereka akan dihapus dari list wadah, meninggalkannya dengan ukuran dari 0. Parameters Parameter : tidak ada Return value : tidak ada 2.3.5. list:: empty Test whether container is empty . Kembali apakah list wadah kosong, yaitu apakah dengan
ukuran adalah 0.
Fungsi ini tidak memodifikasi isi wadah dengan cara apapun. To clear the content of a list container, use list::clear . Untuk menghapus list isi wadah, gunakan list:: jelas. Parameters Parameter none tidak ada Return Value Kembali Nilai true if the container size is 0 , false otherwise. true jika ukuran wadah adalah 0, false jika tidak. 2.3.6. list:: end Return iterator to end vReturns sebuah iterator mengacu ke masa lalu-the-elemen akhir dalam
list wadah. Parameters Parameter : tidak ada Return Value : Sebuah iterator ke elemen melewati akhir dari barisan. 2.3.7. list:: erase Erase elements : Menghapus dari list baik wadah satu elemen (posisi) atau kisaran elemen
([pertama, terakhir)). Ini secara efektif mengurangi list ukuran dengan jumlah elemen dihilangkan, memanggil setiap elemen's destructor sebelumnya. list urutan s adalah wadah khusus dirancang untuk menjadi efisien memasukkan dan menghapus unsur dalam posisi apapun, bahkan di tengah-tengah urutan. Dibandingkan dengan urutan basa wadah lain (vektor dan deque), list s adalah wadah yang paling efisien pada beberapa posisi menghapus selain awal atau akhir dari barisan, dan, tidak seperti di ini, semua yang diperoleh sebelumnya dan referensi iterators tetap berlaku setelah operasi penghapusan dan merujuk pada unsur-unsur yang sama mereka merujuk sebelum (kecuali, tentu saja, bagi mereka yang mengacu pada unsur-unsur terhapus). Parameter : Semua parameter adalah tipe anggota iterator, yang dalam list wadah didefinisikan sebagai jenis iterator bidirectional. position Iterator menunjuk ke satu elemen yang akan dihapus dari list. first, last Iterators menetapkan kisaran dalam list wadah untuk dihapus: [pertama, terakhir]. yaitu, rentang mencakup semua unsur antara pertama dan terakhir, termasuk elemen ditunjukkan oleh pertama, tetapi bukan orang yang ditunjukkan oleh terakhir.
Return value : A bidirectional iterator menunjuk ke lokasi baru dari elemen yang mengikuti unsur terakhir dihapus oleh fungsi panggil, yang merupakan list akhir jika operasi menghapus elemen terakhir dalam urutan tersebut. 2.3.8. list:: front Access first element Mengembalikan referensi ke elemen pertama dalam list wadah.
Tidak seperti member list:: memulai, yang mengembalikan sebuah iterator untuk elemen yang sama ini, fungsi ini mengembalikan referensi langsung. Parameters : tidak ada Return value : Sebuah referensi ke elemen pertama dalam list wadah. 2.3.9. list:: get_allocator Get allocator: Mengembalikan objek pengalokasi digunakan untuk constuct wadah.
Parameter : tidak ada Return Value :pengalokasi.
2.3.10. list:: menyisipkan Insert elements list wadah diperluas dengan memasukkan unsur-unsur baru sebelum di posisi
elemen. Ini secara efektif meningkatkan kontainer ukuran dengan jumlah elemen dimasukkan. list urutan s adalah wadah khusus dirancang untuk menjadi efisien memasukkan dan menghapus unsur dalam posisi apapun, bahkan di tengah-tengah urutan. Dibandingkan dengan urutan basa wadah lain (vektor dan deque), list s adalah wadah yang paling efisien melakukan sisipan pada beberapa posisi selain awal atau akhir dari barisan, dan, tidak seperti di ini, semua yang diperoleh sebelumnya dan referensi iterators tetap berlaku setelah penyisipan dan merujuk pada unsur-unsur yang sama mereka merujuk sebelumnya. Parameter menentukan berapa banyak elemen yang dimasukkan dan nilai-nilai mereka diinisialisasi: Parameter :
position Posisi dalam wadah di mana elemen-elemen baru dimasukkan. iterator adalah jenis anggota, yang didefinisikan sebagai jenis iterator bidirectional. x
Nilai yang akan digunakan untuk menginisialisasi elemen yang disisipkan. T adalah template pertama parameter (jenis unsur-unsur yang disimpan dalam wadah). n Jumlah elemen untuk menyisipkan. Setiap elemen diinisialisasi dengan nilai ditentukan dalam x. Anggota jenis unsigned size_type adalah tipe integral. first, last Iterators menetapkan berbagai elemen. Salinan unsur-unsur dalam rentang [pertama, terakhir) yang disisipkan pada posisi posisi. Perhatikan bahwa rentang mencakup semua unsur antara pertama dan terakhir, termasuk elemen ditunjukkan oleh pertama, tetapi bukan orang yang ditunjukkan oleh terakhir. Jenis template bisa semua jenis input iterator. Return value : Hanya versi pertama mengembalikan sebuah nilai, yang merupakan sebuah iterator yang menunjuk ke elemen yang baru dimasukkan.
2.3.11. list:: max_size Return maximum size Mengembalikan jumlah elemen maksimum yang list wadah dapat terus.
Ini adalah ukuran maksimal wadah dapat mencapai karena sistem atau implementasi perpustakaan keterbatasan. Parameters tidak ada Return Value Jumlah maksimum elemen yang list wadah dapat memiliki sebagai isinya. 2.3.12. list:: merge Merge sorted lists Menyatu x ke dalam list, memasukkan semua unsur dari x ke dalam list objek
pada posisi memerintahkan masing-masing. Ini mengosongkan x dan meningkatkan list ukuran. Versi kedua (fungsi template), memiliki perilaku yang sama, tetapi mengambil fungsi spesifik untuk melakukan operasi perbandingan yang bertugas menentukan titik penyisipan. Fungsi perbandingan untuk melakukan pemesanan ketat lemah (yang pada dasarnya berarti operasi perbandingan harus transitif dan irreflexive).
Penggabungan dilakukan menggunakan dua iterators: satu untuk iterate melalui x dan satu lagi untuk menjaga titik penyisipan dalam list objek; Selama pengulangan dari x, jika elemen arus di x membandingkan kurang dari elemen pada titik penyisipan saat ini dalam list objek, unsur dihapus dari x dan dimasukkan ke lokasi tersebut, jika tidak titik penyisipan adalah maju. Operasi ini diulang sampai kedua ujung tercapai, di mana saat unsur-unsur sisa dari x (jika ada) akan dipindah ke akhir dari list objek dan fungsi kembali (operasi terakhir ini dilakukan dalam waktu konstan).
Seluruh operasi tidak melibatkan konstruksi atau penghancuran unsur apa pun objek. Jika tidak ada pemesanan diperlukan, pilihan lain untuk menggabungkan fungsi list menjadi anggota list:: sambatan, yang lebih cepat. Parameter : x Sebuah list yang berisi objek jenis yang sama benda sebagai wadah ini. comp Perbandingan fungsi itu, mengambil dua nilai dari jenis yang sama dari yang tercantum dalam list objek, mengembalikan nilai true jika argumen pertama adalah kurang daripada yang kedua, dan palsu sebaliknya. Return value : tidak ada
2.3.13. list:: operator = Copy container content Menetapkan sebagai konten baru untuk wadah salinan unsur-unsur dalam x.
Unsur-unsur yang terkandung dalam objek sebelum panggilan yang dijatuhkan, dan diganti dengan salinan yang ada di vektor x, jika ada.
Setelah panggilan ini fungsi anggota, baik list objek dan x akan memiliki ukuran yang sama dan membandingkan sama dengan satu sama lain. Parameter : x Sebuah list berisi objek elemen dari jenis yang sama. Return value : *this *
2.3.14. list:: pop_back Menghapus elemen terakhir
Menghapus elemen terakhir dalam daftar wadah, daftar secara efektif mengurangi ukuran per satu.
Panggilan ini elemen yang dihapus destructor. Parameters :tak ada Return value :tak ada Kompleksitas : Konsta 2.3.15. list:: pop_front Menghapus elemen pertama
Menghapus elemen pertama dalam daftar wadah, daftar secara efektif mengurangi ukuran per satu. Panggilan ini elemen yang dihapus destructor. Parameters : tak ada Return value : tak ada Kompleksitas : konstan 2.3.16. list:: push_back Tambahkan elemen pada akhir
Menambahkan elemen baru di akhir daftar, tepat setelah elemen terakhir saat ini.Isi dari elemen baru ini adalah untuk melakukan salinan x.
Ini secara efektif meningkatkan daftar ukuran per satu. Parameters : x Nilai yang akan disalin ke elemen baru. T adalah template pertama parameter (jenis unsur-unsur yang disimpan dalam wadah).
Return value : tak ada
2.3.17. list:: push_front Masukkan elemen pada awal
Menyisipkan elemen baru pada awal daftar, tepat sebelum elemen pertama saat ini.Isi dari elemen baru ini adalah untuk melakukan salinan x. Ini secara efektif meningkatkan daftar ukuran per satu. Parameters : x Nilai yang akan disalin ke elemen baru. T adalah template pertama parameter (jenis unsur-unsur yang disimpan dalam wadah). Return value : tak ada Penyimpanan untuk unsur baru dialokasikan menggunakan pengalokasi:: mengalokasikan (), yang dapat melemparkan pengecualian pada kegagalan (untuk pengalokasi default, bad_alloc dilemparkan jika permintaan alokasi tidak berhasil). Kompleksitas : konstan
2.3.18. list:: rbegin Kembali reverse iterator untuk mundur awal
Reverse iterator kembali mengacu pada elemen terakhir dalam daftar wadah. rbegin mengacu pada elemen tepat sebelum yang satu yang akan dirujuk oleh anggotaakhir. Parameters : tak ada
Return Value : Sebuah reverse reverse iterator ke awal urutan.
Baik reverse_iterator dan const_reverse_iterator adalah jenis anggota.Dalam daftar template kelas, ini adalah dua arah sebaliknya iterators, yang didefinisikan sebagai reverse_iterator dan reverse_iterator masing-masing. Kompleksitas : konstan
2.3.19. list:: remove Hapus elemen dengan nilai tertentu
Menghapus dari daftar semua elemen dengan nilai tertentu.Ini menyebut destructor obyek tersebut dan mengurangi daftar ukuran dengan jumlah elemen dihapus. Tidak seperti fungsi anggota daftar:: menghapus, yang menghapus elemen dengan posisi mereka (iterator), fungsi ini (daftar:: remove) menghapus elemen dengan nilai mereka. Fungsi serupa, daftar:: remove_if, ada, yang memungkinkan untuk kondisi selain nilai polos perbandingan harus dilakukan pada setiap elemen dalam rangka untuk menentukan elemen-elemen yang akan dihapus.
Perhatikan bahwa fungsi algoritma global, menghapus, ada dengan perilaku yang serupa tapi yang beroperasi di antara dua iterators. Parameters : nilai Nilai dari elemen-elemen yang akan dihapus. T adalah kelas pertama template parameter (jenis unsur-unsur yang disimpan dalam wadah daftar). Return value : tak ada Kompleksitas : Linear dalam daftar:: ukuran (perbandingan). 2.3.20. list:: remove_if Hapus kondisi memenuhi unsur
Menghapus dari daftar semua unsur yang Pred Predikat returns true. Ini menyebut destructor obyek tersebut dan mengurangi daftar ukuran dengan jumlah elemen dihapus. Pred predikat dapat dilaksanakan sebagai ungkapan diketik pun mengambil satu argumen dari tipe yang sama seperti daftar dan mengembalikan bool (mungkin ini juga menjadi pointer fungsi atau kelas yang mengimplementasikan objek operator (). Fungsi panggilan Pred (* i) untuk setiap elemen (di mana i adalah iterator untuk elemen). Setiap elemen dalam daftar yang kembali ini benar,akan dihapus dari wadah. Perhatikan bahwa fungsi algoritma global, remove_if, ada dengan perilaku yang serupa tapi yang beroperasi di antara dua iterators. Parameters: Pred Unary predikat itu, mengambil nilai jenis yang sama seperti yang terdapat dalam daftar objek, pengembalian berlaku bagi nilai-nilai untuk dihapus dari wadah, dan salah bagi mereka yang tersisa. Return value : tak ada
Kompleksitas : Linear dalam daftar:: ukuran (predikat). 2.3.21. list:: rend Kembali reverse iterator untuk mundur akhir
Reverse iterator kembali mengacu ke elemen tepat sebelum elemen pertama dalam daftar wadah, yang dianggap akhir kebalikannya. mengoyakkan mengacu pada karakter tepat sebelum yang satu yang akan dirujuk oleh anggotamulai. Parameters : tak ada Return Value : Sebuah reverse reverse iterator untuk akhir dari barisan.
Baik reverse_iterator dan const_reverse_iterator adalah jenis anggota.Dalam daftar template kelas, ini adalah dua arah sebaliknya iterators, yang didefinisikan sebagai reverse_iterator dan reverse_iterator masing-masing.
Kompleksitas : konstan
2.3.22. list:: resize Ubah ukuran
Mengubah ukuran wadah mengandung unsur sz. Jika sz lebih kecil dibandingkan dengan wadah ukuran, isi dikurangi menjadi unsur sz pertama, sisanya yang dijatuhkan. Jika sz lebih besar dibandingkan dengan wadah ukuran, isi diperluas dengan memasukkan pada akhir sebanyak salinan dari c yang diperlukan untuk mencapai ukuran elemen sz. Perhatikan bahwa fungsi ini mengubah isi sebenarnya wadah dengan menyisipkan atau menghapus elemen dari itu. Parameters : sz Ukuran wadah baru, dinyatakan dalam jumlah elemen. Anggota jenis unsigned size_type adalah tipe integral. c Objek yang isinya disalin ke unsur-unsur tambahan dalam sz kasus yang lebih besar dibandingkan dengan wadah ukuran. Jika tidak ditentukan, konstruktor default digunakan. T adalah template pertama parameter (jenis unsur-unsur yang disimpan dalam wadah).
Return Value : tak ada
Dalam hal pertumbuhan, penyimpanan untuk unsur-unsur baru dialokasikan menggunakan pengalokasi:: mengalokasikan (), yang dapat melemparkan pengecualian pada kegagalan (untuk pengalokasi default, bad_alloc dilemparkan jika permintaan alokasi tidak berhasil). Kompleksitas : Jika wadah tumbuh, linier dalam jumlah jumlah elemen disisipkan (konstruktor).
Jika wadah menyusut, linier pada jumlah elemen terhapus (penghancuran) ditambah sampai linier pada ukuran baru (iterator muka) 2.3.23. list :: reverse Membalik urutan unsur-unsur
Membalikkan urutan elemen dalam daftar wadah. Semua iterators dan referensi ke elemen tetap berlaku. Parameters : tak ada Return value : tak ada Kompleksitas : Linier dalam ukuran
2.3.24. list:: ukuran Kembali ukuran
Mengembalikan jumlah elemen dalam wadah. Parameters : tak ada Return Value : Jumlah elemen yang sesuai dalam daftar isi.
Anggota jenis unsigned size_type adalah tipe integral.
Kompleksitas : Linear dalam beberapa implementasi. 2.3.25. list:: sort Urut unsur-unsur dalam wadah
Penyortiran dilakukan dengan membandingkan unsur-unsur dalam wadah secara berpasangan dengan menggunakan algoritma sorting.
Pada versi pertama, tidak mengambil parameter, pembandingan dilakukan dengan menggunakan operator
Pada versi kedua, yang perbandingan fungsi perfomed menggunakan comp, yang melakukan pemesanan ketat lemah (ini pada dasarnya berarti operasi perbandingan harus transitif dan irreflexive).
Seluruh operasi tidak melibatkan konstruksi atau penghancuran unsur apa pun objek. Parameter : comp Perbandingan fungsi itu, mengambil dua nilai dari jenis yang sama dari yang tercantum dalam daftar objek, mengembalikan nilai true jika argumen pertama mendahului argumen kedua dalam urutan tertentu (misalnya, jika yang pertama adalah kurang daripada yang kedua), dan false jika tidak .
Return value : tak ada Kompleksitas : Sekitar NlogN dimana N merupakan daftar ukuran 2.3.26. list:: sambatan Pindahkan elemen dari daftar untuk daftar Bergerak elemen dari daftar x ke daftar kontainer di
posisi tertentu, secara efektif memasukkan unsur-unsur tertentu ke dalam wadah dan menghapus mereka dari x.
Hal ini meningkatkan wadah ukuran sesuai dengan jumlah elemen dimasukkan, dan mengurangi ukuran dari x dengan jumlah yang sama (bila x adalah tidak sama dengan * ini). Operasi tidak melibatkan konstruksi atau penghancuran objek dan unsur apa pun, kecuali untuk versi ketiga, itu dilakukan dalam waktu konstan. Para iterators yang menunjuk ke elemen bergerak tidak lagi berlaku. Parameters : posisi Posisi dalam wadah di mana elemen dari x adalah dimasukkan. iterator adalah jenis anggota, yang didefinisikan sebagai bidirectional iterator. x Sebuah daftar yang berisi objek jenis yang sama benda sebagai wadah ini. Mungkin parameter ini * jika posisiini menunjuk ke sebuah elemen tidak benar-benar sedang disusun: untuk versi pertama, hal ini tidak pernah terjadi, tetapi untuk versi lain hal ini mungkin. i Hanya satu elemen tersebut akan dipindahkan. iterator adalah jenis anggota, yang didefinisikan sebagai jenis iterator bidirectional. pertama, terakhir Iterators menetapkan berbagai elemen dalam x. Menggerakkan elemen dalam rentang [pertama, terakhir) ke posisi. Perhatikan bahwa rentang mencakup semua unsur antara pertama dan terakhir, termasuk elemen ditunjukkan oleh pertama, tetapi bukan orang yang ditunjukkan oleh terakhir.
iterator adalah jenis anggota, yang didefinisikan sebagai jenis iterator bidirectional. Return value :tak ada Kompleksitas : Konstan pada semua kasus, kecuali jika x adalah suatu daftar objek yang berbeda * ini dalam versi fungsi ketiga, dalam hal ini adalah linear dalam kisaran antara pertama dan terakhir (iterator muka). 2.3.27. list:: swap Swap konten Pertukaran isi dari vektor dengan isi lst, yang merupakan salah satu daftar objek
yang mengandung unsur-unsur dari jenis yang sama. Sizes may differ. Ukuran mungkin berbeda. Setelah panggilan ke fungsi anggota ini, unsur-unsur dalam wadah ini adalah mereka yang berada di lst sebelum panggilan, dan unsur-unsur lst adalah mereka yang dalam hal ini.Semua iterators, referensi dan petunjuk tetap berlaku untuk bertukar benda. Perhatikan bahwa fungsi algoritma global ada dengan nama yang sama, swap, dan perilaku yang sama. Parameters :lst Lain daftar wadah dari jenis yang sama seperti ini yang isinya swap dengan wadah ini. Return value : tak ada Kompleksitas : konstan
2.3.28. list:: unik Hapus nilai-nilai duplikat Versi pertama, tanpa parameter, menghapus semua kecuali elemen
pertama dari setiap kelompok yang sama berturut-turut unsur-unsur dalam daftar wadah.
Perhatikan bahwa suatu unsur adalah hanya dihapus dari daftar jika sama dengan segera unsur sebelumnya. Dengan demikian, fungsi ini berguna untuk disortir khusus daftar.
Untuk versi kedua, menerima biner predikat, fungsi perbandingan tertentu untuk menentukan "keunikan" dari suatu unsur dapat ditentukan. Bahkan, setiap perilaku dapat dilaksanakan (dan tidak hanya polos perbandingan), tapi perhatikan bahwa fungsi akan memanggil binary_pred (* i, * (i-1)) untuk semua pasangan dari unsur-unsur (di mana i adalah iterator untuk sebuah elemen ) dan hapus saya dari daftar jika predikat returns true. Unsur-unsur telah dihapus destructors mereka dipanggil dan iterators dan referensi mereka menjadi tidak valid. Fungsi algoritma global, unik, ada dengan perilaku yang serupa tapi yang beroperasi di antara dua iterators. Paramaters : BinaryPredicate Biner predikat itu, mengambil dua nilai dari jenis yang sama daripada yang terdapat dalam daftar objek, mengembalikan nilai true untuk menghilangkan dari unsur wadah berlalu sebagai argumen pertama, dan palsu sebaliknya. Return value : tak ada Kompleksitas :Linear dalam ukuran -1.
BAB III PENUTUP
3.1. Kesimpulan
List adalah salah satu tipe struktur data, terdiri dari beberapa objek yang terkait oleh pointer. Kita bisa melakukan operasi penambahan elemen, penghapusan elemen, dan pencarian dalam list. Header list.h list:: assign , list:: back , list:: begin , list:: clear , list:: empty , list:: end , list:: erase , list:: front , list:: get_allocator , list:: menyisipkan , list:: max_size , list:: merge , list:: operator = , list:: pop_back , list:: pop_front , list:: push_back , list:: push_front , list:: rbegin , list:: remove , list:: remove_if , list:: rend , list:: resize , list:: reverse , list:: ukuran , list:: sort , list:: sambatan , list:: swap , list:: unik