Dalam tumpukan murni, satu-satunya operasi yang diijinkan adalah Push
, Pop
, dan Peek
tetapi dalam hal praktis, itu tidak sepenuhnya benar. Atau lebih tepatnya, Peek
operasi sering memungkinkan Anda untuk melihat posisi apa pun di tumpukan, tetapi yang menarik adalah bahwa itu relatif terhadap salah satu ujung tumpukan.
Jadi, seperti yang orang lain katakan, array adalah akses acak dan semuanya dirujuk ke awal array .
Dalam tumpukan, Anda hanya dapat menambah / menghapus di akhir kerja tumpukan, tetapi Anda masih memiliki akses acak dibaca tetapi itu dirujuk ke ujung yang berfungsi . Itulah perbedaan mendasar.
Misalnya, ketika Anda melewatkan parameter pada tumpukan ke suatu fungsi, callee tidak harus mematikan parameter untuk melihatnya. Itu hanya mendorong variabel lokal pada stack dan merujuk semua variabel dan parameter lokal berdasarkan offset dari pointer stack. Jika Anda hanya menggunakan array, lalu bagaimana callee tahu di mana mencari parameternya? Ketika callee selesai, ia memunculkan variabel lokalnya, mendorong nilai kembali, mengembalikan kontrol ke pemanggil, dan penelepon mengeluarkan nilai kembali (jika ada), dan kemudian mengeluarkan parameter dari tumpukan. Keindahannya adalah ia bekerja tidak peduli seberapa jauh Anda bersarang ke pemanggilan fungsi (dengan asumsi Anda tidak kehabisan ruang stack).
Itu satu penggunaan / implementasi tertentu, tetapi menggambarkan perbedaan: array selalu direferensikan dari awal tetapi tumpukan selalu direferensikan dari beberapa posisi ujung yang bekerja.
Salah satu kemungkinan implementasi stack adalah array plus indeks untuk mengingat di mana akhir pekerjaan.