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 ujung saja.
Kelas std :: stack adalah adaptor kontainer. Objek kontainer menyimpan data dari tipe data serupa. Anda dapat membuat tumpukan dari berbagai kontainer urutan. Jika tidak ada penampung yang disediakan, penampung deque akan digunakan secara default. Adaptor penampung tidak mendukung iterator, sehingga tidak dapat digunakan untuk memanipulasi data.
Dalam tutorial C ++ ini, Anda akan belajar
- Apa itu std :: stack?
- Stack Syntax
- Jenis Anggota
- Operasi di Stack
- Implementasi Stack
- push () dan pop ()
- kosong (), ukuran (), atas ()
- emplace () dan swap ()
- Tumpuk di STL
Stack Syntax
Untuk membuat tumpukan, kita harus menyertakan file header
template> class stack;
- Type - adalah Jenis elemen yang ada di std :: stack. Ini bisa berupa tipe C ++ yang valid atau bahkan tipe yang ditentukan pengguna.
- Penampung - adalah Jenis objek penampung yang mendasari.
Jenis Anggota
Berikut adalah tipe anggota tumpukan:
- value_type- Parameter template pertama, T. Ini menunjukkan jenis elemen.
- container_type- Parameter template kedua, Container. Ini menunjukkan jenis wadah yang mendasari.
- size_type- Tipe integral tak bertanda tangan.
Operasi di Stack
Tumpukan C ++ mendukung operasi dasar berikut:
- push - Menambahkan / mendorong item ke dalam tumpukan.
- pop - Ini menghapus / memunculkan item dari tumpukan.
- peek - Mengembalikan item teratas dari tumpukan tanpa mengeluarkannya.
- isFull - Memeriksa apakah tumpukan sudah penuh.
- isEmpty - Memeriksa apakah tumpukan kosong.
Implementasi Stack
Langkah 1) Awalnya kami memiliki tumpukan kosong. Bagian atas tumpukan kosong disetel ke -1.
Langkah 2) Selanjutnya, kami telah mendorong elemen 5 ke dalam tumpukan. Bagian atas tumpukan akan menunjuk ke elemen 5.
Langkah 3) Selanjutnya, kami telah mendorong 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 muncul dari tumpukan. Bagian atas tumpukan sekarang menunjuk ke elemen 5.
push () dan pop ()
Fungsi stack :: push () menambahkan item baru ke bagian atas stack. Ukuran tumpukan bertambah 1 setelah penyisipan. Fungsi tersebut mengambil sintaks ini:
stack.push(value)
Nilainya adalah item yang akan dimasukkan ke dalam tumpukan.
Fungsi stack :: pop () menghapus elemen teratas dari stack. Ini adalah item tumpukan terbaru. Ukuran tumpukan dikurangi 1 setelah penghapusan. Berikut adalah sintaks fungsinya:
stack.pop()
Fungsi ini tidak membutuhkan parameter.
Contoh 1:
#include#include using namespace std;int main() {stack 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 tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kami untuk menggunakan fungsinya.
- Sertakan file stack header 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 fungsi while loop dan empty () untuk memeriksa apakah stack TIDAK kosong. The! adalah operator NOT.
- Mencetak konten tumpukan saat ini di konsol.
- Panggil fungsi pop () di stack.
- Akhir badan loop sementara.
- Akhir badan 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#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack 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 tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kami untuk menggunakan fungsinya.
- Sertakan file stack header dalam kode kami untuk menggunakan fungsinya.
- Sertakan namespace std dalam program kita untuk menggunakan kelasnya tanpa memanggilnya.
- Buat fungsi createStack yang bisa kita gunakan untuk membuat tumpukan mystack. Tumpukan akan menampung satu set bilangan bulat.
- Awal badan fungsi createStack.
- Buat instance dari tipe data mystack dan beri nama ms.
- Gunakan while loop dan fungsi empty () untuk memeriksa apakah stack kosong.
- Awal badan loop sementara.
- 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 badan loop sementara.
- Cetak baris kosong di konsol.
- Akhir badan fungsi createStack.
- Panggil fungsi main (). Logika program harus ditambahkan di dalam tubuh 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 menjalankan 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 badan fungsi main ().
emplace () dan swap ()
Ini adalah fungsi tumpukan bawaan lainnya:
- emplace () - konstruksi kemudian memasukkan elemen baru ke atas tumpukan.
- swap () - menukar konten tumpukan dengan konten tumpukan lain.
Contoh 3:
#include#include #include using namespace std;int main() {stack st1;stack 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 tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kami untuk menggunakan fungsinya.
- Sertakan file stack header 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 di dalam tubuh 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 konten dari 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 empty () untuk memeriksa apakah tumpukan st1 tidak kosong.
- Cetak konten tumpukan st1 di konsol. "" Menambahkan spasi di antara elemen tumpukan saat mencetaknya di konsol.
- Jalankan fungsi pop () pada stack st1 untuk menghapus elemen teratas.
- Akhir badan pernyataan while.
- Cetak beberapa teks di konsol. Endl adalah kata kunci C ++ untuk baris akhir. Ini menggerakkan kursor mouse ke baris berikutnya untuk mulai mencetak dari sana.
- Gunakan pernyataan while dan fungsi empty () untuk memeriksa apakah tumpukan st2 tidak kosong.
- Cetak isi tumpukan st2 di konsol. "" Menambahkan spasi di antara elemen tumpukan saat mencetaknya di konsol.
- Jalankan fungsi pop () pada stack st2 untuk menghapus elemen teratas.
- Akhir badan pernyataan while.
- Akhir badan fungsi main ().
Tumpuk di STL
STL (Standard Template Library) dilengkapi dengan kelas template yang menyediakan struktur data C ++ umum. Oleh karena itu, tumpukan juga dapat diterapkan di STL. Kami hanya menyertakan pustaka ini dalam kode kami dan menggunakannya untuk menentukan tumpukan.
stackst;
Sintaks di atas mendeklarasikan tumpukan st ke elemen tipe data T.
Contoh 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
Keluaran:
Berikut tangkapan layar kodenya:
Penjelasan Kode:
- Sertakan file header iostream dalam kode kami untuk menggunakan fungsinya.
- Sertakan file stack header 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 di dalam tubuh 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 badan fungsi main ().
Ringkasan:
- Tumpukan adalah struktur data yang beroperasi berdasarkan teknik LIFO (Last In first Out).
- Std :: stack hanya mengizinkan item ditambahkan dan dihapus dari satu ujung.
- Kelas std :: stack adalah adaptor kontainer, yang menampung item dari 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 empty () untuk memeriksa apakah tumpukan kosong atau tidak.