Stack (Tumpukan)


๐Ÿงญ 1. Pengertian Stack

https://images.openai.com/static-rsc-4/TrA1VnQgvzUkSbCpdFsZv8z22gSfvqU8L1YoltIQsYjiuNgW8mZcqvVgue4AxJwgtPLwAbcg6soXIupDkUC__2HkYL1D536ujuWtxPtTT3EaRGp3YRTD89SzIl2L4TzJF_49EFyfOV1lSNykaoP0rYJzGNnn719kYfO9nwK6-bSfVC-APRDhb_yzBwN9uA5_?purpose=fullsize
https://images.openai.com/static-rsc-4/9bAL6eYSzXxy4gMNfyNvilYcYtV6P7zuqv6R1pRqa9fFuh5pyb06IbTtdlkwgW7yRutTGRG_xmFvuwqZQWmO77z_ChOWLmv1o37dJqaARCvmUbc1MdJHnLZGFORl5YrwGhWfAUOtlrx5x3Fxx7SqL0fFZGBSJDdKFk-UhnaE54rls5K2jRobYeoLu1uGGIJ0?purpose=fullsize
https://images.openai.com/static-rsc-4/MBMxl3DGAdrV7oPCLbPLYr2LqPoom-XLwrHZbuBQCkVd2GI8Jb4uUIyXoS4JkfAUFYVeGnTI0q2wmNhBY9fIab5GEYDXoRwjbw4wezp2GES3lrktmrjHEHdF7WhQo4oU_hLE7rLpydWxLJHyrW8f1fYfrysWPCk_s3pKqdO8UHUFWKQ-nkJTNOGOQ88xbJ48?purpose=fullsize

6

๐Ÿ“– Definisi

Stack adalah struktur data linear yang bekerja berdasarkan prinsip LIFO (Last In First Out), yaitu elemen yang terakhir masuk akan menjadi elemen pertama yang keluar.


๐Ÿง  Narasi Konseptual

Bayangkan tumpukan piring:

  • Piring pertama diletakkan di bawah
  • Piring berikutnya ditumpuk di atasnya
  • Saat mengambil piring, kita selalu mengambil dari atas

โžก๏ธ Itulah konsep Stack dalam komputer.


๐ŸŽฏ 2. Karakteristik Stack

๐Ÿ“Š Tabel Karakteristik

KarakteristikPenjelasan
PrinsipLIFO (Last In First Out)
AksesHanya dari satu sisi (Top)
StrukturLinear
Operasi utamaPush, Pop, Peek

๐Ÿง  Narasi

Stack hanya memiliki satu pintu akses:

  • Semua operasi terjadi di bagian atas (TOP)
  • Tidak bisa mengakses elemen tengah atau bawah langsung

โš™๏ธ 3. Operasi Dasar Stack

https://images.openai.com/static-rsc-4/LsjwRd5w3Y-S16lJPS-Zp6Ru8TmmPUiiTU6XvnQCEyyC2FGlYQhul_QERvzED7ppMkMe4GbgyTh044X7J32yJ-S3ACl6nJgTINx1SJzo7NvDgWR8mGd764WbTH70p8VxIdxo57RM40u5R58UOH-KYnF0RwgZgIK1W_510o8XepLMzzl2KcJGpUYcWx3Qq8De?purpose=fullsize
https://images.openai.com/static-rsc-4/fi44aIN2JwZ_ucTSgEMGifvmhgid3GDpWALH-EseaeJK_DM1xY4m5GdK7ZZFva9Gu8TCsdNd8ORe0CFEvPImWkYyPzXAe4trQyRHmwGAnk59flmmol0MxGelt-ZaewAn0zXKefiYfe4Jq_QCFE7j4rqvtG3wwMZuyRrxH-rxWQ3aBhaC5b18pFGPrRw0_WGH?purpose=fullsize
https://images.openai.com/static-rsc-4/HLuHdlg7tJ_EZbNf1zyHM2vKV4WTnCmcU7afgtmLYl6RA-_d2JOUgP2kqj7JSL206EJWQ73G1TCmYTYZQNATwxRk8RNom9NddVxOiYizK1L59-W1zhUO5ALL4PpidSJ9P0Lfx2ayIlL_cO-56buIHjDS83_9CrpISxBKnb6nfNwcCzHY3UHVr-zPIXvUi9Ez?purpose=fullsize

6

๐Ÿ“Œ A. Push (Menambah Data)

Menambahkan elemen ke atas stack.

๐Ÿ“Œ B. Pop (Menghapus Data)

Menghapus elemen paling atas.

๐Ÿ“Œ C. Peek/Top (Melihat Data)

Melihat elemen paling atas tanpa menghapus.


๐Ÿ“Š Tabel Operasi

OperasiFungsiKompleksitas
PushMenambah dataO(1)
PopMenghapus dataO(1)
PeekMelihat topO(1)

๐Ÿงฑ 4. Representasi Stack

๐Ÿ”น A. Array Based Stack

https://images.openai.com/static-rsc-4/7I3P_3oOa4HG8vhR9XG3g4LDgo7CgSZzI91MgvzeD8UEsMopy6_XWPhuJRUoDE8DXdQdo8FFHmlRsFzpFoSoqCcF-80kXjbOhN-c09sSH01svghZwye51kEKtZO50TgFZD-31ClDVaUGnGXynlQxKVv3Z_RWKosmlMyvZtLce1vQborhczjPjG6kMhJh6Zh1?purpose=fullsize
https://images.openai.com/static-rsc-4/JQ3XAPcfj4eiIWS3e4Dx-lKTso5eGUMmrYxOYH-UFRQ4m3gQVXiYktfrKH3ffVxfJ1DOSaWeiEBj4OgO9Xy52JV3x8UbrOo8MmC8yj6sHyp4aCItLRXAmApFDF_N_WQBc7FMJwYRyTzYhovT8ar9XFNY1oNIdHS_APzYz5qo8S4yNt17ZRvsr08jaMLY-Roy?purpose=fullsize
https://images.openai.com/static-rsc-4/wKrKQ6zgIlSOBneL47yaDqe2KpMsTbUxetucOJTFGFrAF7D_ua_-0zOnVIO1ox4pOzNgLJHlNux3QvZaCch5G-rYdZXKh2c8Xc7WtcrrehHwfklWI9fovcjPxGXKQvA2xRsp1VEtJz5u15YZk6kUBG0vsy8aRtBe9qBF3nHYV7iuWFqx-geoYGBT_GtD4xvA?purpose=fullsize

7

  • Menggunakan array statis
  • Ukuran terbatas

๐Ÿ”น B. Linked List Based Stack

https://images.openai.com/static-rsc-4/WuCICpweSrluo20GE-Tm_SCnYB2Rwwhuvgpxj_KGNqT04u8JgA2yNTRNH_THabnqqepgrvLxSIrix4RY6-NafWoacG49rmZvTts7nOkjYph2VPpn2rkk1b8LZ8vGfj4LBlp_YBxgUUEuoqMaO-XPdpkgsYHj-zQhDC3AeyssrZCzYY8gi0XBoSZV30zr3XMR?purpose=fullsize
https://images.openai.com/static-rsc-4/cS83-ElMJ1GmfgmDxzP4HsKV1hm4MpoOt5yWCDUcyjpxFBfpNqqb0JETkWE-banbQd6o3eYxEiK6E2UdRCIIJE654o5bul8AlY49SMoDPLL7UaZieF8t3doaxFNYUAEaaUyB9JjpD1EXGp6jYRKyPki5obMpJtgUhBsOuK-vbMXQS5W3aIeo2aW5A9Q_TrLA?purpose=fullsize
https://images.openai.com/static-rsc-4/lB4A99qUgekiutLB_tUPuTDNAN4UMOot1HFPgaiMdGUFUl-3Wn1ulKw9mquUDvxrjiSczRl6JJAkj5uLkTo7H9oxPidJuwOMkZFo5keR-B9Yhbz8_VrY6y-uRpiTAIU_dfVvbyPEc5QZcWjjRBgk0Hu4HkIS0WjWzSuEiXtGJf8kPxtHRddM_Nl8iLm6OM5g?purpose=fullsize

6

  • Menggunakan linked list
  • Ukuran dinamis
  • Lebih fleksibel

๐Ÿง  5. Cara Kerja Stack (Step by Step)

๐Ÿ“Œ Contoh Proses Push

Stack kosong โ†’ push 10 โ†’ push 20 โ†’ push 30

TOP โ†’ 30
20
BOTTOMโ†’10

๐Ÿ“Œ Proses Pop

  • Pop โ†’ 30 keluar
  • Pop โ†’ 20 keluar

๐Ÿงฎ 6. Ilustrasi Operasi Stack

https://images.openai.com/static-rsc-4/JQ3XAPcfj4eiIWS3e4Dx-lKTso5eGUMmrYxOYH-UFRQ4m3gQVXiYktfrKH3ffVxfJ1DOSaWeiEBj4OgO9Xy52JV3x8UbrOo8MmC8yj6sHyp4aCItLRXAmApFDF_N_WQBc7FMJwYRyTzYhovT8ar9XFNY1oNIdHS_APzYz5qo8S4yNt17ZRvsr08jaMLY-Roy?purpose=fullsize
https://images.openai.com/static-rsc-4/ow2a0Dg7-phBw4i8egcr0_cjrwSbyHkqSdnrGDSYeHDwOVW1Q9BuzOzKCNpPLnAUByKri0sr2O4nXBCXEyeMkfxlErIhU3gPNa01OvNV28pqscUmib0aDuVwYzD7IK5KKy5V2goc9vekEGs_eWL0ReVdyz5bPHgNpBLZzi-SICc9auQLHJoCp_fNe-HVm1GH?purpose=fullsize
https://images.openai.com/static-rsc-4/ZnPqFTO2TtG-aLBeNc4XHLh5Yk6tV9pbvF1qiTheY8xN1CfF7zAYWCD867102CgCEgEB9qufA3fQVOLKApqnZLgHyFu8BkGCgJZFYpFVnaNRE_vNThU3fg4294hZZU61Rz-3DVYzufkIs4nOUeulOFMcC7Ek5GYJMdI5pXE0WWM4v1Nk-TmA71BOEai6M4FY?purpose=fullsize

6


โš ๏ธ 7. Kondisi Error pada Stack

๐Ÿ“Š Tabel Error

ErrorPenyebab
OverflowStack penuh (push melebihi kapasitas)
UnderflowStack kosong tapi pop dilakukan

๐Ÿง  Narasi

  • Overflow terjadi pada array stack
  • Underflow terjadi saat pop dari stack kosong

๐Ÿ” 8. Aplikasi Stack dalam Dunia Nyata

๐Ÿ“Œ Contoh Penggunaan

BidangPenggunaan Stack
BrowserHistory back/forward
EditorUndo/Redo
SistemCall stack fungsi
CompilerParsing ekspresi

๐Ÿ’ป 9. Stack dalam Pemrograman

๐Ÿ“Œ Implementasi Array (C++)

#include <iostream>
using namespace std;#define MAX 5class Stack {
int top;
int arr[MAX];public:
Stack() { top = -1; } void push(int x){
if(top >= MAX-1){
cout << "Overflow\n";
return;
}
arr[++top] = x;
} void pop(){
if(top < 0){
cout << "Underflow\n";
return;
}
top--;
} int peek(){
return arr[top];
}
};

๐Ÿ“Š 10. Stack vs Struktur Data Lain

๐Ÿ“Š Tabel Perbandingan

StrukturPolaAkses
StackLIFOTop saja
QueueFIFOFront & Rear
ArrayRandomIndex
Linked ListSequentialNode

๐Ÿง  11. Stack vs Queue (Perbandingan Konsep)

https://images.openai.com/static-rsc-4/of_5_bWsc0058SMZOlwQ2ZgDRLl5300yJRcsvA8jqoc-npsDkopmSDF6wAwStlrddTZOwc3WfUCoKHtVwjzusncRZB3MpFutUKuuAkJzgCG835n2J-UqOUm_uo3DI2Lx0ZzxbQggl2-02J4NBUoBFUGMNOC1f0ckWJuDSHXbwe5tqNiNMJ4xwqzW8HD4q57X?purpose=fullsize
https://images.openai.com/static-rsc-4/VxD3RVvsqzMEmwW0G6kPZLA5fHqx-XItX4LKqwmyR02ZdTr3Ea8NEOHNqGSXQah5hEjVSIinDvXmZb2brtTRR8_Tm_bSjwL7okGsocWJPoPzqj3lPsJiEt2vxBz5A9mso6OmGv-hgxcj-Mt6OOwf4mx-X7uXFXRgApjNgEmD3p4nqyteibr_7vtOFuwQBlXd?purpose=fullsize
https://images.openai.com/static-rsc-4/cEAMD00Zw9AXw__xM_JBj9LIF5kPkPzyG2cQsORYiQo0BcS8zMgG-23YqsE5RMjz3t08OXSCdIKe8QcvBviPUNp6_TQ7wnnXqo0J6-3wLey1iXaKq1D2O2X8HjqUyl2oF0RleJ_RZMu7pDyezjwBI2Q7xUhGRV05gPJW1ZjlxvTAxdVFXVbIgSdc7FFguo8N?purpose=fullsize

7

๐Ÿ“– Penjelasan

  • Stack โ†’ seperti tumpukan piring (LIFO)
  • Queue โ†’ seperti antrian (FIFO)

๐Ÿ”„ 12. Stack dalam Rekursi (Call Stack)

๐Ÿง  Narasi

Saat fungsi dipanggil:

  • Sistem menyimpan pemanggilan di stack
  • Fungsi terakhir dipanggil akan selesai lebih dulu

โžก๏ธ Ini disebut Call Stack


๐Ÿงช 13. Studi Kasus

๐Ÿ“Œ Kasus: Undo pada Editor

  • Setiap aksi disimpan ke stack
  • Undo = pop dari stack

๐Ÿ“š 14. Kelebihan dan Kekurangan Stack

๐Ÿ“Š Tabel

KelebihanKekurangan
Operasi cepat O(1)Akses terbatas
Implementasi mudahTidak fleksibel
Efisien untuk sistemOverflow bisa terjadi

๐Ÿ“Œ 15. Ringkasan Materi

  • Stack adalah struktur data LIFO
  • Operasi utama: push, pop, peek
  • Bisa diimplementasikan dengan array atau linked list
  • Digunakan dalam banyak sistem komputer
  • Penting dalam pemahaman rekursi dan fungsi

๐Ÿ“ 16. Latihan / Diskusi

โœ๏ธ Soal Teori

  1. Jelaskan konsep LIFO
  2. Apa itu overflow dan underflow?
  3. Bedakan stack dan queue

๐Ÿ’ป Soal Praktikum

  1. Implementasikan stack sederhana
  2. Buat program undo sederhana
  3. Simulasikan push dan pop

๐ŸŽฏ Penutup

Stack adalah struktur data fundamental yang wajib dipahami karena digunakan dalam hampir semua sistem komputasi modern, terutama:

  • Pemanggilan fungsi
  • Compiler
  • Undo/Redo sistem
  • Parsing ekspresi