Tumpuk C++ STL dengan Contoh
Apa itu std::stack?
Tumpukan adalah struktur data yang beroperasi berdasarkan teknik LIFO (Last In First Out). std::stack memungkinkan elemen ditambahkan dan dihapus dari satu sisi saja.
Kelas std::stack adalah adaptor kontainer. Objek kontainer menyimpan data dengan tipe data serupa. Anda dapat membuat tumpukan dari berbagai wadah urutan. Jika tidak ada container yang disediakan, deque container akan digunakan secara default. Adaptor kontainer tidak mendukung iterator, sehingga tidak dapat digunakan untuk memanipulasi data.
Sintaks Tumpukan
Untuk membuat tumpukan, kita harus menyertakan file header dalam kode kita. Kami kemudian menggunakan sintaks ini untuk mendefinisikan std::stack:
template <class Type, class Container = deque<Type> > class stack;
- Tipe – adalah Jenis elemen yang terdapat dalam std::stack. Itu bisa valid apa saja C++ tipe atau bahkan tipe yang ditentukan pengguna.
- Wadah – adalah Jenis objek kontainer yang mendasarinya.
Jenis Anggota
Berikut adalah tipe anggota tumpukan:
- value_type- Parameter template pertama, T. Ini menunjukkan tipe elemen.
- container_type- Parameter templat kedua, Kontainer. Ini menunjukkan jenis kontainer yang mendasarinya.
- size_type- Tipe integral tak bertanda tangan.
Operations di Stack
A C++ tumpukan mendukung operasi dasar berikut:
- push – Ini menambah/mendorong item ke dalam tumpukan.
- pop – Ini menghapus/memunculkan item dari tumpukan.
- peek – Mengembalikan item teratas dari tumpukan tanpa menghapusnya.
- isFull – Memeriksa apakah tumpukan sudah penuh.
- isEmpty – Memeriksa apakah tumpukan kosong.
Implementasi Tumpukan
Langkah 1) Kami awalnya memiliki tumpukan kosong. Bagian atas tumpukan kosong diatur ke -1.
Langkah 2) Selanjutnya, kita telah mendorong elemen 5 ke dalam tumpukan. Bagian atas tumpukan akan menunjuk ke elemen 5.
Langkah 3) Berikutnya, kita telah memasukkan elemen 50 ke dalam tumpukan. Bagian atas tumpukan bergeser dan menunjuk ke elemen 50.
Langkah 4) Kami kemudian melakukan operasi pop, menghapus elemen teratas dari tumpukan. Elemen 50 dikeluarkan dari tumpukan. Bagian atas tumpukan sekarang menunjuk ke elemen 5.
dorong() dan pop()
Fungsi stack::push() menambahkan item baru ke bagian atas tumpukan. Ukuran tumpukan bertambah 1 setelah penyisipan. Fungsinya mengambil sintaks ini:
stack.push(value)
Nilainya adalah item yang akan dimasukkan ke dalam tumpukan.
Fungsi stack:: pop() menghapus elemen teratas tumpukan. Ini adalah item terbaru dari tumpukan. Ukuran tumpukan berkurang 1 setelah penghapusan. Berikut sintaks fungsinya:
stack.pop()
Fungsi ini tidak memerlukan parameter.
Contoh 1:
#include <iostream> #include <stack> using namespace std; int main() { stack<int> st; st.push(10); st.push(20); st.push(30); st.push(40); st.pop(); st.pop(); while (!st.empty()) { cout << ' ' << st.top(); st.pop(); } }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan file header tumpukan dalam kode kami untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam fungsi ini.
- Buat tumpukan st untuk menyimpan nilai integer.
- Gunakan fungsi push() untuk memasukkan nilai 10 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan nilai 20 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan nilai 30 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan nilai 40 ke dalam tumpukan.
- Gunakan fungsi pop() untuk menghapus elemen teratas dari tumpukan, yaitu 40. Elemen teratas sekarang menjadi 30.
- Gunakan fungsi pop() untuk menghapus elemen teratas dari tumpukan, yaitu 30. Elemen teratas sekarang menjadi 20.
- Gunakan while loop dan fungsi empty() untuk memeriksa apakah tumpukan TIDAK kosong. ! adalah operator NOT.
- Mencetak isi tumpukan saat ini di konsol.
- Panggil fungsi pop() pada tumpukan.
- Akhir dari badan perulangan while.
- Akhir dari isi fungsi main().
kosong(), ukuran(), atas()
Tumpukan memiliki fungsi bawaan yang dapat Anda gunakan untuk bermain-main dengan tumpukan dan nilainya. Ini termasuk:
- kosong()- memeriksa apakah tumpukan kosong atau tidak.
- size()- mengembalikan ukuran tumpukan, yaitu jumlah elemen dalam tumpukan.
- top()- mengakses elemen tumpukan di bagian atas.
Contoh 2:
#include <iostream> #include <stack> using namespace std; void createStack(stack <int> mystack) { stack <int> ms = mystack; while (!ms.empty()) { cout << '\t' << ms.top(); ms.pop(); } cout << '\n'; } int main() { stack <int> st; st.push(32); st.push(21); st.push(39); st.push(89); st.push(25); cout << "The stack st is: "; createStack(st); cout << "\n st.size() : " << st.size(); cout << "\n st.top() : " << st.top(); cout << "\n st.pop() : "; st.pop(); createStack(st); return 0; }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan file header tumpukan dalam kode kita untuk menggunakan fungsinya.
- Sertakan namespace std dalam program kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat fungsi createStack yang bisa kita gunakan untuk membuat stack mystack. Tumpukan akan menampung satu set bilangan bulat.
- Awal dari isi fungsi createStack.
- Buat sebuah instance dari tipe data mystack dan beri nama ms.
- Gunakan perulangan while dan fungsi kosong() untuk memeriksa apakah tumpukan kosong.
- Awal dari badan perulangan while.
- Gunakan fungsi top() yang disimpan di bagian atas tumpukan. Karakter \t akan membuat tab baru.
- Gunakan fungsi pop() untuk menghapus elemen di bagian atas tumpukan.
- Akhir dari badan perulangan while.
- Cetak baris kosong di konsol.
- Akhir dari isi fungsi createStack.
- Panggil fungsi main(). Logika program harus ditambahkan di dalam isi fungsi main().
- Awal dari isi fungsi main().
- Buat objek tumpukan st.
- Gunakan fungsi push() untuk memasukkan elemen 32 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan elemen 21 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan elemen 39 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan elemen 89 ke dalam tumpukan.
- Gunakan fungsi push() untuk memasukkan elemen 25 ke dalam tumpukan.
- Cetak beberapa teks di konsol.
- Panggil fungsi createStack untuk mengeksekusi operasi penyisipan di atas ke dalam tumpukan.
- Cetak ukuran tumpukan di konsol bersama teks lainnya.
- Cetak elemen di bagian atas tumpukan di konsol.
- Cetak beberapa teks di konsol.
- Hapus elemen di bagian atas tumpukan. Ini kemudian akan mengembalikan elemen yang tersisa di tumpukan.
- Panggil fungsi createStack untuk menjalankan operasi di atas.
- Program harus mengembalikan nilai setelah berhasil diselesaikan.
- Akhir dari isi fungsi main().
emplace() dan menukar()
Ini adalah fungsi tumpukan bawaan lainnya:
- emplace()- konstruksi lalu menyisipkan elemen baru ke atas tumpukan.
- swap()- menukar isi tumpukan dengan isi tumpukan lain.
Contoh 3:
#include <iostream> #include <stack> #include <cstdlib> using namespace std; int main() { stack<int> st1; stack<int> st2; st1.emplace(12); st1.emplace(19); st2.emplace(20); st2.emplace(23); st1.swap(st2); cout << "st1 = "; while (!st1.empty()) { cout << st1.top() << " "; st1.pop(); } cout << endl << "st2 = "; while (!st2.empty()) { cout << st2.top() << " "; st2.pop(); } }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan file header tumpukan dalam kode kami untuk menggunakan fungsinya.
- Sertakan file header cstdlib dalam kode kami untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Panggil fungsi main(). Logika program akan ditambahkan ke dalam isi fungsi ini.
- Deklarasikan tumpukan bernama st1 untuk menyimpan nilai integer.
- Deklarasikan tumpukan bernama st2 untuk menyimpan nilai integer.
- Gunakan fungsi emplace() untuk memasukkan bilangan bulat 12 ke dalam tumpukan bernama st1.
- Gunakan fungsi emplace() untuk memasukkan bilangan bulat 19 ke dalam tumpukan bernama st1.
- Gunakan fungsi emplace() untuk memasukkan bilangan bulat 20 ke dalam tumpukan bernama st2.
- Gunakan fungsi emplace() untuk memasukkan bilangan bulat 23 ke dalam tumpukan bernama st2.
- Gunakan fungsi swap() untuk menukar isi dua tumpukan, st1 dan st2. Isi tumpukan st1 harus dipindahkan ke tumpukan st2. Isi tumpukan st2 harus dipindahkan ke tumpukan st1.
- Cetak beberapa teks di konsol.
- Gunakan pernyataan while dan fungsi kosong() untuk memeriksa apakah tumpukan st1 tidak kosong.
- Cetak isi tumpukan st1 di konsol. Tanda ” ” menambah ruang di antara elemen tumpukan saat mencetaknya di konsol.
- Jalankan fungsi pop() pada tumpukan st1 untuk menghapus elemen teratas.
- Akhir dari isi pernyataan while.
- Cetak beberapa teks di konsol. Ujungnya adalah a C++ kata kunci untuk garis akhir. Ini memindahkan kursor mouse ke baris berikutnya untuk mulai mencetak dari sana.
- Gunakan pernyataan while dan fungsi kosong() untuk memeriksa apakah tumpukan st2 tidak kosong.
- Cetak isi tumpukan st2 di konsol. Tanda ” ” menambah ruang di antara elemen tumpukan saat mencetaknya di konsol.
- Jalankan fungsi pop() pada tumpukan st2 untuk menghapus elemen teratas.
- Akhir dari isi pernyataan while.
- Akhir dari isi fungsi main().
Tumpuk di STL
STL (Standard Template Library) hadir dengan kelas template yang menyediakan kesamaan C++ struktur data. Oleh karena itu, tumpukan juga dapat diimplementasikan di STL. Kami cukup memasukkan perpustakaan ini ke dalam kode kami dan menggunakannya untuk mendefinisikan tumpukan.
stack<T> st;
Sintaks di atas mendeklarasikan tumpukan st untuk elemen bertipe data T.
Contoh 4:
#include <iostream> #include <stack> #include <cstdlib> using namespace std; int main() { stack<int> st; st.push(12); st.push(19); st.push(20); cout << st.top(); cout << st.size(); }
Keluaran:
Berikut ini tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kita untuk menggunakan fungsinya.
- Sertakan file header tumpukan dalam kode kami untuk menggunakan fungsinya.
- Sertakan file header cstdlib dalam kode kami untuk menggunakan fungsinya.
- Sertakan namespace std dalam kode kita untuk menggunakan kelasnya tanpa memanggilnya.
- Panggil fungsi main(). Logika program harus ditambahkan dalam isi fungsi ini.
- Deklarasikan tumpukan st untuk menyimpan data integer.
- Tambahkan elemen 12 ke tumpukan.
- Tambahkan elemen 19 ke tumpukan.
- Tambahkan elemen 20 ke tumpukan.
- Cetak elemen di bagian atas tumpukan di konsol.
- Cetak ukuran tumpukan di konsol.
- Akhir dari isi fungsi main().
Kesimpulan
- Tumpukan adalah struktur data yang beroperasi berdasarkan teknik LIFO (Last In First Out).
- std::stack hanya memungkinkan item ditambahkan dan dihapus dari satu ujung.
- Kelas std::stack adalah adaptor kontainer, yang menampung item dengan tipe data serupa.
- Tumpukan dapat dibuat dari berbagai wadah urutan.
- Jika Anda tidak menyediakan container, container deque akan digunakan secara default.
- Fungsi push() adalah untuk memasukkan item ke dalam tumpukan.
- Fungsi pop() adalah untuk menghapus item teratas dari langkah.
- Fungsi kosong() adalah untuk memeriksa apakah suatu tumpukan kosong atau tidak.