Stack vs Heap
Ang Stack ay isang nakaayos na listahan kung saan ang pagpasok at pagtanggal ng mga item sa listahan ay maaari lamang gawin sa isang dulo na tinatawag na tuktok. Dahil sa kadahilanang ito, ang stack ay itinuturing bilang Huling in Unang out (LIFO) na istraktura ng data. Ang Heap ay isang espesyal na istraktura ng data na nakabatay sa mga puno at natutugunan nito ang isang espesyal na katangian na tinatawag na heap property. Gayundin, ang isang heap ay isang kumpletong puno, na nangangahulugan na walang mga puwang sa pagitan ng mga dahon ng puno i.e. sa isang kumpletong puno ang bawat antas ay pinupunan bago magdagdag ng isang bagong antas sa puno at ang mga node sa isang naibigay na antas ay pinupunan mula sa kaliwa pakanan.
Ano ang Stack?
Tulad ng nabanggit kanina, ang stack ay isang istraktura ng data kung saan ang mga elemento ay idinaragdag at inalis mula sa isang dulo lang na tinatawag na tuktok. Pinapayagan lamang ng mga stack ang dalawang pangunahing operasyon na tinatawag na push at pop. Ang push operation ay nagdaragdag ng bagong elemento sa tuktok ng stack. Ang pop operation ay nag-aalis ng isang elemento mula sa tuktok ng stack. Kung ang stack ay puno na, kapag ang isang push operation ay ginanap, ito ay itinuturing bilang isang stack overflow. Kung ang isang pop operation ay isinasagawa sa isang walang laman na stack, ito ay itinuturing na isang stack underflow. Dahil sa maliit na bilang ng mga operasyon na maaaring isagawa sa isang stack, ito ay itinuturing bilang isang pinaghihigpitang istraktura ng data. Bukod pa rito, ayon sa paraan ng pagtukoy sa mga pagpapatakbo ng push at pop, malinaw na ang mga elementong huling idinagdag sa stack ay unang lumabas sa stack. Samakatuwid, ang stack ay itinuturing bilang isang istruktura ng data ng LIFO.
Ano ang Heap?
Tulad ng nabanggit kanina, ang heap ay isang kumpletong puno na nakakatugon sa katangian ng heap. Ang heap property ay nagsasaad na, kung ang y ay isang child node ng x, ang value na nakaimbak sa node x ay dapat na mas malaki kaysa sa o katumbas ng value na nakaimbak sa node y (i.e. value(x) ≥ value(y)). Ang property na ito ay nagpapahiwatig na ang node na may pinakamalaking halaga ay palaging ilalagay sa ugat. Ang isang heap na ginawa gamit ang property na ito ay tinatawag na max-heap. May isa pang variation ng heap property na nagsasaad ng kabaligtaran nito. (ibig sabihin, value(x) ≤ value(y)). Ito ay nagpapahiwatig na ang node na may pinakamaliit na halaga ay palaging ilalagay sa ugat, kaya tinatawag na min-heap. Mayroong malawak na hanay ng mga operasyong ginagawa sa mga tambak gaya ng paghahanap ng minimum (sa min-heaps) o maximum (sa max-heaps), pagtanggal ng minimum (sa min-heaps) o maximum (sa max-heaps), pagtaas (sa max -heaps) o bumababa (sa min-heaps) key, atbp.
Ano ang pagkakaiba ng Stack at Heap?
Ang pangunahing pagkakaiba sa pagitan ng mga stack at heap ay habang ang stack ay isang linear na istraktura ng data, ang heap ay isang hindi linear na istraktura ng data. Ang stack ay isang nakaayos na listahan na sumusunod sa LIFO property, habang ang heap ay isang kumpletong puno na sumusunod sa heap property. Higit pa rito, ang stack ay isang pinaghihigpitang istraktura ng data na sumusuporta lamang sa isang limitadong bilang ng mga operasyon bilang push at pop, habang ang heap ay sumusuporta sa isang malawak na hanay ng mga operasyon tulad ng paghahanap at pagtanggal ng minimum o maximum, pagtaas o pagbaba ng key at pagsasama.