apa perbedaan mendasar antara tumpukan dan antrian?


130

Apa perbedaan mendasar antara tumpukan dan antrian ??

Tolong bantu saya, saya tidak dapat menemukan perbedaannya.

Bagaimana Anda membedakan tumpukan dan antrian?

Saya mencari jawabannya di berbagai tautan dan menemukan jawaban ini ..

Dalam pemrograman tingkat tinggi,

tumpukan didefinisikan sebagai daftar atau urutan elemen yang diperpanjang dengan menempatkan elemen baru "di atas" elemen yang ada dan disingkat dengan menghapus elemen dari bagian atas elemen yang ada. Ini adalah [Jenis Data Abstrak] ADT dengan operasi matematika "push" dan "pop".

Antrian adalah urutan elemen yang ditambahkan dengan menempatkan elemen baru di belakang yang sudah ada dan disingkat dengan menghapus elemen di depan antrian. Ini adalah ADT [Tipe Data Abstrak]. Ada lebih banyak istilah-istilah ini dipahami dalam pemrograman Java, C ++, Python dan sebagainya.

Bisakah saya mendapat jawaban yang lebih detail? Tolong bantu aku.


12
Anda tampaknya telah menjawab pertanyaan Anda sendiri - tumpukan adalah wadah Last-In First-Out (LIFO), dan antrian adalah wadah First-In First-Out (FIFO).
Iridium

Jawaban:


151

Stack adalah struktur data LIFO (terakhir masuk pertama keluar). Tautan terkait ke wikipedia berisi deskripsi dan contoh terperinci.

Antrian adalah struktur data FIFO (pertama masuk pertama keluar). Tautan terkait ke wikipedia berisi deskripsi dan contoh terperinci.


131

Bayangkan setumpuk kertas . Potongan terakhir yang dimasukkan ke tumpukan ada di atas, jadi itu yang pertama keluar. Ini LIFO . Menambahkan selembar kertas disebut "mendorong", dan mengeluarkan selembar kertas disebut "popping".

Bayangkan antrian di toko . Orang pertama dalam barisan adalah orang pertama yang keluar dari barisan. Ini FIFO . Seseorang yang masuk antrean "enqueued", dan seseorang yang keluar dari antrean "dequeued".


3
Salah satu analogi terbaik yang bisa saya pikirkan.
Yeikel

83

Model Visual

Pancake Stack (LIFO)

Satu-satunya cara untuk menambahkan satu dan / atau menghapus satu adalah dari atas.

tumpukan panekuk

Antrean Garis (FIFO)

Ketika seseorang tiba, mereka tiba di ujung antrian dan ketika seseorang pergi, mereka pergi dari depan antrian.

garis dmv

Fakta menyenangkan: orang Inggris menyebut barisan orang sebagai Antrian


6
Astaga, ini pasti jawabannya imo. Terima kasih @Jacksonkr
Kulasangar

Haha juga yakin ini adalah deskripsi yang sempurna tentang Antrian dan Stack, tetapi hanya demi argumen, bagaimana jika saya ingin pancake pertama ditambahkan ke piring? Saya tahu ini dapat diselesaikan dengan stack.size () vs. if (! Stack.isEmpty ()), tapi tetap saja pancake pertama mungkin yang terbaik:) ... Either way, jawaban yang bagus dan saya setuju ini yang paling jelas ... tampaknya menarik bahwa orang Inggris menyebut baris sebagai Antrian (jika itu akurat), dalam bahasa non-pemrograman saya masih akan menganggap bahwa baris tempat entri pertama harus pergi terlebih dahulu (setelah keluar dari garis / antrian) )
ViaTech

Tunggu, mereka tidak dipanggil antrian di tempat lain?
pesiar

37

Anda dapat menganggap keduanya sebagai daftar barang yang dipesan (dipesan pada saat barang ditambahkan ke dalam daftar). Perbedaan utama antara keduanya adalah bagaimana elemen baru masuk daftar dan elemen lama meninggalkan daftar.

Untuk tumpukan, jika saya punya daftar a, b, c, dan saya tambahkan d, itu akan ditempel di ujungnya, jadi saya berakhir dengan a,b,c,d. Jika saya ingin memunculkan elemen daftar, saya menghapus elemen terakhir yang saya tambahkan, yaitu d. Setelah muncul, daftar saya sekarang a,b,ckembali

Untuk antrian, saya menambahkan elemen baru dengan cara yang sama. a,b,cmenjadi a,b,c,dsetelah menambahkan d. Tapi, sekarang ketika saya muncul, saya harus mengambil elemen dari depan daftar, jadi itu menjadi b,c,d.

Sangat sederhana!


14

Antre

Antrian adalah koleksi barang yang dipesan.

Item dihapus di salah satu ujung yang disebut 'depan' ujung antrian.

Item dimasukkan di ujung lain yang disebut 'belakang' dari antrian.

Item pertama yang dimasukkan adalah yang pertama kali dihapus (FIFO).

Tumpukan

Stack adalah koleksi barang.

Ini memungkinkan akses ke hanya satu item data: item terakhir dimasukkan.

Item dimasukkan & dihapus di satu ujung yang disebut 'Top of the stack'.

Ini adalah objek yang dinamis & terus berubah.

Semua item data diletakkan di atas tumpukan dan diambil dari atas

Struktur pengaksesan ini dikenal sebagai struktur Last in First out (LIFO)


Jadi pada dasarnya 'antrian' adalah "FIFO" - antrian keluar masuk pertama. Sementara 'tumpukan' adalah "LIFO" - terakhir dalam antrian keluar pertama. Apakah saya benar?
Sebastian Nielsen

@SebastianNielsen Ya benar seperti yang disebutkan dalam jawaban.
Dissanayake

Tapi apa bedanya antara daftar tertaut dan tumpukan? Bukankah itu sama?
Sebastian Nielsen

@SebastianNielsen Tumpukan adalah ADT, yang artinya memaparkan antarmuka, yang merupakan operasi push dan pop, tetapi mekanisme yang mendasari (implementasi) disembunyikan dari pengguna akhir. Tumpukan dapat diimplementasikan dengan array atau dengan daftar tertaut.
gdyrrahitis

13

TUMPUKAN:

  1. Stack didefinisikan sebagai daftar elemen di mana kita dapat menyisipkan atau menghapus elemen hanya di bagian atas tumpukan.
  2. Perilaku tumpukan seperti sistem Last-In First-Out (LIFO).
  3. Stack digunakan untuk melewatkan parameter antar fungsi. Pada panggilan ke suatu fungsi, parameter dan variabel lokal disimpan di tumpukan.
  4. Bahasa pemrograman tingkat tinggi seperti Pascal, c, dll. Yang menyediakan dukungan untuk rekursi gunakan stack untuk pembukuan. Ingat dalam setiap panggilan rekursif, ada kebutuhan untuk menyimpan nilai parameter saat ini, variabel lokal, dan alamat kembali (alamat yang harus dikembalikan kontrol setelah panggilan).

ANTRE:

  1. Antrian adalah kumpulan dari jenis elemen yang sama. Ini adalah daftar linier di mana penyisipan dapat terjadi di salah satu ujung daftar, disebut bagian belakang daftar, dan penghapusan hanya dapat dilakukan di ujung lainnya, yang disebut bagian depan daftar
  2. Perilaku antrian seperti sistem First-In-First-Out (FIFO).

Saya cukup yakin Anda dapat memasukkan di akhir atau memulai tumpukan juga, saya pikir hal penting yang perlu diperhatikan di sini adalah FIFO vs LIFO
Mike

6

Tumpukan adalah kumpulan elemen, yang dapat disimpan dan diambil satu per satu. Elemen diambil secara terbalik dari waktu penyimpanannya, yaitu elemen terakhir yang disimpan adalah elemen berikutnya yang akan diambil. Tumpukan kadang-kadang disebut sebagai struktur Last-In-First-Out-Out (LIFO) atau First-In-Last-Out (FILO). Elemen yang disimpan sebelumnya tidak dapat diambil sampai elemen terakhir (biasanya disebut sebagai elemen 'atas') telah diambil.

Antrian adalah kumpulan elemen, yang dapat disimpan dan diambil satu per satu. Elemen diambil sesuai urutan waktu penyimpanannya, yaitu elemen pertama yang disimpan adalah elemen berikutnya yang akan diambil. Antrian kadang-kadang disebut sebagai struktur First-In-First-Out (FIFO) atau Last-In-Last-Out (LILO). Elemen-elemen yang selanjutnya disimpan tidak dapat diambil sampai elemen pertama (biasanya disebut sebagai elemen 'depan') telah diambil.


2

STACK: Stack didefinisikan sebagai daftar elemen di mana kita dapat menyisipkan atau menghapus elemen hanya di bagian atas tumpukan

Stack digunakan untuk melewatkan parameter antar fungsi. Pada panggilan ke suatu fungsi, parameter dan variabel lokal disimpan di tumpukan.

Tumpukan adalah kumpulan elemen, yang dapat disimpan dan diambil satu per satu. Elemen diambil secara terbalik dari waktu penyimpanannya, yaitu elemen terakhir yang disimpan adalah elemen berikutnya yang akan diambil. Tumpukan kadang-kadang disebut sebagai struktur Last-In-First-Out-Out (LIFO) atau First-In-Last-Out (FILO). Elemen yang disimpan sebelumnya tidak dapat diambil sampai elemen terakhir (biasanya disebut sebagai elemen 'atas') telah diambil.

ANTRE:

Antrian adalah kumpulan dari jenis elemen yang sama. Ini adalah daftar linier di mana penyisipan dapat terjadi di salah satu ujung daftar, disebut bagian belakang daftar, dan penghapusan hanya dapat dilakukan di ujung lainnya, yang disebut bagian depan daftar

Antrian adalah kumpulan elemen, yang dapat disimpan dan diambil satu per satu. Elemen diambil sesuai urutan waktu penyimpanannya, yaitu elemen pertama yang disimpan adalah elemen berikutnya yang akan diambil. Antrian kadang-kadang disebut sebagai struktur First-In-First-Out (FIFO) atau Last-In-Last-Out (LILO). Elemen-elemen yang selanjutnya disimpan tidak dapat diambil sampai elemen pertama (biasanya disebut sebagai elemen 'depan') telah diambil.


2

Untuk mencoba dan menyederhanakan deskripsi tumpukan dan antrian, Mereka adalah rantai dinamis elemen informasi yang dapat diakses dari satu ujung rantai dan satu-satunya perbedaan nyata di antara mereka adalah kenyataan bahwa:

saat bekerja dengan tumpukan

  • Anda memasukkan elemen di salah satu ujung rantai dan
  • Anda mengambil dan / atau menghapus elemen dari ujung rantai yang sama

saat dengan antrian

  • Anda memasukkan elemen di salah satu ujung rantai dan
  • Anda mengambil / menghapusnya dari ujung yang lain

CATATAN : Saya menggunakan kata-kata abstrak dari mengambil / menghapus dalam konteks ini karena ada contoh ketika Anda hanya mengambil elemen dari rantai atau dalam arti hanya membacanya atau mengakses nilainya, tetapi ada juga contoh ketika Anda menghapus elemen dari rantai dan akhirnya ada contoh ketika Anda melakukan kedua tindakan dengan panggilan yang sama.

Elemen kata juga sengaja digunakan untuk abstrak rantai imajiner sebanyak mungkin dan memisahkannya dari istilah bahasa pemrograman tertentu. Entitas informasi abstrak yang disebut elemen ini bisa apa saja, dari penunjuk, nilai, string atau karakter, objek, ... tergantung pada bahasanya.

Dalam kebanyakan kasus, meskipun itu sebenarnya nilai atau lokasi memori (yaitu pointer). Dan sisanya hanya menyembunyikan fakta ini di balik jargon bahasa <

Antrian dapat membantu ketika urutan elemen penting dan perlu persis sama seperti ketika elemen pertama kali masuk ke program Anda. Misalnya ketika Anda memproses aliran audio atau ketika Anda menyangga data jaringan. Atau ketika Anda melakukan semua jenis toko dan pemrosesan selanjutnya. Dalam semua kasus ini Anda perlu urutan elemen yang akan dihasilkan dalam urutan yang sama ketika mereka masuk ke program Anda, jika tidak, informasi mungkin berhenti masuk akal. Jadi, Anda dapat memecah program Anda di bagian yang membaca data dari beberapa input, melakukan beberapa pemrosesan dan menulisnya dalam antrian dan bagian yang mengambil data dari antrian memprosesnya dan menyimpannya dalam antrian lain untuk diproses lebih lanjut atau mentransmisikan data .

Tumpukan dapat membantu ketika Anda perlu untuk sementara menyimpan elemen yang akan digunakan dalam langkah langsung dari program Anda. Misalnya, bahasa pemrograman biasanya menggunakan struktur stack untuk meneruskan variabel ke fungsi. Apa yang sebenarnya mereka lakukan adalah menyimpan (atau mendorong) argumen fungsi di stack dan kemudian melompat ke fungsi di mana mereka menghapus dan mengambil (atau pop) jumlah elemen yang sama dari stack. Dengan cara itu ukuran tumpukan bergantung pada jumlah panggilan fungsi yang disarangkan. Selain itu, setelah fungsi dipanggil dan selesai apa yang dilakukannya, ia meninggalkan tumpukan dalam kondisi yang sama persis seperti sebelum dipanggil! Dengan begitu fungsi apa pun dapat beroperasi dengan tumpukan mengabaikan bagaimana fungsi lain beroperasi dengannya.

Terakhir, Anda harus tahu bahwa ada istilah lain yang digunakan di luar sana untuk konsep yang sama. Misalnya tumpukan bisa disebut tumpukan. Ada juga versi hibrida dari konsep-konsep ini, misalnya antrian ujung ganda dapat berperilaku pada saat yang sama sebagai tumpukan dan sebagai antrian, karena dapat diakses oleh kedua ujungnya secara bersamaan. Selain itu, fakta bahwa struktur data disediakan untuk Anda sebagai tumpukan atau sebagai antrian, itu tidak berarti bahwa itu diimplementasikan seperti itu, ada contoh di mana struktur data dapat diimplementasikan sebagai apa saja dan diberikan sebagai spesifik struktur data hanya karena dapat dibuat berperilaku seperti itu. Dengan kata lain, jika Anda memberikan metode push dan pop ke struktur data apa pun, mereka secara ajaib menjadi tumpukan!


Jangan gunakan pemformatan kode untuk teks yang bukan kode.
Marquis of Lorne

1

STACK adalah daftar LIFO (terakhir masuk, keluar pertama). artinya misalkan 3 elemen dimasukkan dalam stack yaitu 10,20,30. 10 dimasukkan pertama & 30 dimasukkan terakhir sehingga 30 pertama dihapus dari tumpukan & 10 terakhir dihapus dari tumpukan. Ini adalah daftar LIFO (Last In First Out).

QUEUE adalah daftar FIFO (First In First Out). Berarti satu elemen dimasukkan terlebih dahulu yang akan dihapus terlebih dahulu.


1

Tumpukan yang dianggap sebagai koleksi vertikal. Pertama mengerti bahwa koleksi adalah OBYEK yang mengumpulkan dan mengorganisir OBYEK kecil lainnya. OBYEK-OBYEK kecil ini biasanya disebut sebagai Elemen. Elemen-elemen ini "Dorong" pada tumpukan dalam urutan ABC di mana A adalah yang pertama dan C yang terakhir. secara vertikal akan terlihat seperti ini: elemen ke-3 ditambahkan) elemen ke-2 ditambahkan) elemen ke-1 ditambahkan) A

Perhatikan bahwa "A" yang pertama kali ditambahkan ke tumpukan ada di bagian bawah. Jika Anda ingin menghapus "A" dari tumpukan pertama-tama Anda harus menghapus "C", lalu "B", dan akhirnya elemen target Anda "A". Tumpukan memerlukan pendekatan LIFO saat berurusan dengan kompleksitas tumpukan. (Last In First Out) Ketika menghapus elemen dari tumpukan, sintaks yang benar adalah pop. kami tidak menghapus elemen dari tumpukan yang kami "lepaskan".

Ingatlah bahwa "A" adalah elemen pertama yang didorong ke tumpukan dan "C" adalah item terakhir yang didorong pada tumpukan. Jika Anda memutuskan bahwa Anda ingin melihat apa yang ada di bagian bawah tumpukan, karena 3 elemen ada di tumpukan yang dipesan A menjadi B pertama adalah yang kedua dan C menjadi elemen ketiga, bagian atas harus dibuka kemudian elemen kedua ditambahkan untuk melihat bagian bawah tumpukan.


Harap format pertanyaan Anda agar terlihat lebih baik dan lebih mudah dibaca.
Neeku
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.