Stack adalah struktur data yang mengikuti prinsip LIFO (terakhir, pertama keluar). Dalam erti kata lain, elemen terakhir yang kita tambahkan pada timbunan adalah yang pertama dikeluarkan. Apabila kita menambah (atau menolak) unsur ke timbunan, mereka diletakkan di atas; iaitu di atas semua elemen tambah sebelumnya.
Mungkin ada senario tertentu di mana kita perlu menambah elemen di bahagian bawah timbunan. Terdapat pelbagai cara untuk menambah elemen ke bahagian bawah timbunan. Mereka adalah -
- Menggunakan timbunan tambahan
- menggunakan rekursi
- menggunakan pembolehubah sementara
- menggunakan barisan
Menggunakan timbunan tambahan
kita boleh memasukkan elemen di bahagian bawah timbunan menggunakan timbunan tambahan (timbunan sekunder dengan menggunakan operasi) di Java. Di sini, kami akan menggunakan dua susunan (timbunan utama dan timbunan tambahan) untuk memasukkan elemen di bahagian bawah timbunan utama.
timbunan utama akan mempunyai unsur -unsur asal, sementara timbunan tambahan akan membantu kita menyusun semula unsur -unsur. Kaedah ini mudah difahami.
Langkah
berikut adalah langkah -langkah untuk memasukkan elemen di bahagian bawah timbunan menggunakan timbunan tambahan:
- Inisialisasi dua susunan: Buat timbunan utama tolak beberapa elemen di dalamnya dan kemudian buat timbunan tambahan.
- Pop semua elemen: kemudian keluarkan semua elemen dari timbunan utama dan tolak mereka ke dalam timbunan tambahan kedua. Ini akan membantu kita membalikkan urutan elemen.
- Tolak elemen baru: Apabila timbunan utama kosong, kita perlu menolak elemen baru ke dalam timbunan utama atau anda juga boleh menolak elemen di atas timbunan tambahan jika anda mahu.
- Pulihkan urutan asal: pop semua elemen dari timbunan tambahan dan tolak mereka kembali ke timbunan utama. Ini akan memulihkan urutan elemen asal.
Contoh
berikut adalah contoh bagaimana kita boleh menggunakan timbunan tambahan untuk menambah elemen di bahagian bawah -
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<integer> mainStack, int x) { // Create an extra auxiliary stack Stack<integer> St2 = new Stack(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<integer> stack1 = new Stack(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } } </integer></integer></integer>
Dalam program di atas, kita mulakan dengan menolak unsur -unsur 1, 2, 3, dan 4 ke dalam timbunan. Kemudian, kami memindahkan unsur -unsur ini ke timbunan lain. Selepas itu, kami memasukkan elemen sasaran ke dalam timbunan utama. Akhirnya, kami mengambil semua elemen dari timbunan tambahan.
rekursi adalah satu lagi cara untuk memasukkan elemen di bahagian bawah timbunan. Dalam pendekatan ini, kami akan menggunakan fungsi rekursif untuk memunculkan semua elemen dari timbunan kami sehingga ia menjadi kosong, dan apabila ia menjadi kosong, kami akan memasukkan elemen baru ke dalam timbunan, dan kemudian menolak unsur -unsur kembali ke dalam timbunan.
Langkah
Berikut adalah langkah -langkah untuk memasukkan elemen di bahagian bawah timbunan menggunakan rekursi:
- Kes asas: Semak jika timbunan kosong. Jika ia kosong, kami akan menolak elemen baru ke dalam timbunan.
- kes rekursif: Jika timbunan tidak kosong, kami akan memaparkan elemen teratas dan memanggil fungsi secara rekursif.
- memulihkan unsur -unsur: Setelah selesai dengan memasukkan elemen baru, kita perlu menolak unsur -unsur yang muncul sebelumnya ke dalam timbunan.
Contoh
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<integer> mainStack, int x) { // Create an extra auxiliary stack Stack<integer> St2 = new Stack(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<integer> stack1 = new Stack(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } } </integer></integer></integer>
Dalam program di atas, kami menentukan fungsi rekursif yang memasukkan elemen baru di bahagian bawah timbunan, kami terus memaparkan unsur -unsur dari timbunan sehingga timbunan menjadi kosong, maka kami memasukkan elemen baru dan selepas itu , kami memulihkan unsur -unsur sebelumnya ke dalam timbunan.
menggunakan pembolehubah sementara
kita juga boleh mencapai tugas yang diberikan menggunakan pemboleh ubah sementara. Kami menggunakan pembolehubah ini untuk menyimpan unsur -unsur semasa kami memanipulasi timbunan. Kaedah ini mudah dan kita boleh melaksanakan menggunakan gelung mudah.
Langkah
berikut adalah langkah -langkah untuk memasukkan elemen di bahagian bawah timbunan menggunakan pembolehubah sementara & lt;
- Mulakan pembolehubah sementara: Buat pembolehubah untuk sementara memegang unsur -unsur seperti yang anda lalui melalui timbunan.
- elemen pemindahan: kemudian gunakan gelung untuk elemen pop dari timbunan dan simpan unsur -unsur tersebut dalam pembolehubah sementara.
- Masukkan elemen baru: Setelah timbunan kita kosong, maka kita perlu menolak elemen baru ke dalam timbunan.
- Pulihkan Elemen: Setelah memasukkan elemen, tolak unsur -unsur dari pembolehubah sementara kembali ke timbunan.
Contoh
import java.util.Stack; public class InsertAtBottomUsingRecursion { public static void insertAtElementBottom(Stack<integer> st, int x) { // Base case: If the stack is empty, push the new element if (st.isEmpty()) { st.push(x); return; } // Recursive case: Pop the top element int top = st.pop(); // Call the function recursively insertAtElementBottom(st, x); // Restore the top element into the stack st.push(top); } public static void main(String[] args) { Stack<integer> st = new Stack(); st.push(1); st.push(2); st.push(3); st.push(4); System.out.println("Original Stack: " + st); insertAtElementBottom(st, 0); System.out.println("Stack after inserting 0 at the bottom: " + st); } } </integer></integer>
Dalam program ini, kami menggunakan array sementara untuk memegang unsur -unsur sambil memanipulasi timbunan. Kami kemudian memasukkan elemen baru ke dalam timbunan dan memulihkan unsur -unsur asal ke dalam timbunan.
menggunakan barisan
Dalam pendekatan ini, kami akan menggunakan barisan untuk memegang unsur -unsur sementara semasa memasukkan elemen baru di bahagian bawah timbunan. Kaedah ini adalah cara yang lebih baik untuk menguruskan susunan elemen. Menggunakan giliran kita boleh elemen baru ke timbunan tanpa mengganggu elemen yang sedia ada.
Langkah
berikut adalah langkah -langkah untuk memasukkan elemen di bahagian bawah timbunan menggunakan barisan -
- Inisialisasi barisan: Buat giliran untuk memegang unsur -unsur dari timbunan.
- elemen pemindahan: pop elemen dari timbunan dan enqueue mereka ke dalam barisan.
- Masukkan elemen baru: tolak elemen baru ke dalam timbunan.
- memulihkan unsur -unsur: menanggung unsur -unsur dari barisan dan menolaknya kembali ke dalam timbunan.
Contoh
import java.util.Stack; public class InsertAtBottomUsingTempVar { public static void insertAtElementBottom(Stack<integer> st, int x) { // Temporary variable to hold elements int[] temp = new int[st.size()]; int index = 0; // Transfer elements to temporary variable while (!st.isEmpty()) { temp[index++] = st.pop(); } // Push the new element into the stack st.push(x); // Restore elements from temporary variable for (int i = 0; i st = new Stack(); st.push(1); st.push(2); st.push(3); st.push(4); System.out.println("Original Stack: " + st); insertAtElementBottom(st, 0); System.out.println("Stack after inserting 0 at the bottom: " + st); } } </integer>
output
berikut adalah output kod di atas -
import java.util.Stack; public class InsertAtBottomUsingTwoStacks { public static void insertElementAtBottom(Stack<integer> mainStack, int x) { // Create an extra auxiliary stack Stack<integer> St2 = new Stack(); /* Step 1: Pop all elements from the main stack and push them into the auxiliary stack */ while (!mainStack.isEmpty()) { St2.push(mainStack.pop()); } // Step 2: Push the new element into the main stack mainStack.push(x); /* Step 3: Restore the original order by popping each element from the auxiliary stack and push back to main stack */ while (!St2.isEmpty()) { mainStack.push(St2.pop()); } } public static void main(String[] args) { Stack<integer> stack1 = new Stack(); stack1.push(1); stack1.push(2); stack1.push(3); stack1.push(4); System.out.println("Original Stack: " + stack1); insertElementAtBottom(stack1, 0); System.out.println("Stack after inserting 0 at the bottom: " + stack1); } } </integer></integer></integer>
Dalam pelaksanaan ini, kami menggunakan barisan untuk memegang unsur -unsur untuk masa sementara. Kami mula -mula memindahkan unsur -unsur sedia ada dari timbunan ke barisan. Kemudian, kami menolak elemen baru ke dalam timbunan dan memulihkan unsur -unsur asal dari barisan kembali ke timbunan
NOTA: kita boleh menggunakan struktur data lain seperti array, linkedlist, arraylist, dan lain -lain. Bukannya giliran.
Atas ialah kandungan terperinci Program Java untuk memasukkan elemen di bahagian bawah timbunan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Teknologi yang muncul menimbulkan ancaman dan meningkatkan kemerdekaan platform Java. 1) Teknologi pengkomputeran awan dan kontena seperti Docker meningkatkan kemerdekaan platform Java, tetapi perlu dioptimumkan untuk menyesuaikan diri dengan persekitaran awan yang berbeza. 2) WebAssembly menyusun kod Java melalui GraalVM, memperluaskan kemerdekaan platformnya, tetapi ia perlu bersaing dengan bahasa lain untuk prestasi.

Pelaksanaan JVM yang berbeza dapat memberikan kemerdekaan platform, tetapi prestasi mereka sedikit berbeza. 1. OracleHotspot dan OpenJDKJVM melakukan sama seperti kemerdekaan platform, tetapi OpenJDK mungkin memerlukan konfigurasi tambahan. 2. IBMJ9JVM melakukan pengoptimuman pada sistem operasi tertentu. 3. Graalvm menyokong pelbagai bahasa dan memerlukan konfigurasi tambahan. 4. AzulzingJVM memerlukan pelarasan platform tertentu.

Kemerdekaan platform mengurangkan kos pembangunan dan memendekkan masa pembangunan dengan menjalankan set kod yang sama pada pelbagai sistem operasi. Khususnya, ia ditunjukkan sebagai: 1. Mengurangkan masa pembangunan, hanya satu set kod yang diperlukan; 2. Mengurangkan kos penyelenggaraan dan menyatukan proses ujian; 3. Penyebaran cepat dan kerjasama pasukan untuk memudahkan proses penempatan.

Java'splatformindependencefacilitatescodereusebyallowbytytecodetorunonanyplatformWithAjvm.1) DeveloptersCanWriteCodeOnceforconsistentBeHavioracrossplatforms.2)

Untuk menyelesaikan masalah khusus platform dalam aplikasi Java, anda boleh mengambil langkah-langkah berikut: 1. Gunakan kelas sistem Java untuk melihat sifat sistem untuk memahami persekitaran yang sedang berjalan. 2. Gunakan kelas fail atau java.nio.file untuk memproses laluan fail. 3. Muatkan perpustakaan tempatan mengikut keadaan sistem operasi. 4. Gunakan VisualVM atau JProfiler untuk mengoptimumkan prestasi silang platform. 5. Pastikan persekitaran ujian selaras dengan persekitaran pengeluaran melalui kontena Docker. 6. Gunakan githubactions untuk melakukan ujian automatik pada pelbagai platform. Kaedah ini membantu menyelesaikan masalah khusus platform dalam aplikasi Java.

Loader kelas memastikan konsistensi dan keserasian program Java pada platform yang berbeza melalui format fail kelas bersatu, pemuatan dinamik, model delegasi induk dan bytecode bebas platform, dan mencapai kemerdekaan platform.

Kod yang dihasilkan oleh pengkompil Java adalah platform bebas, tetapi kod yang akhirnya dilaksanakan adalah platform khusus. 1. Kod sumber Java disusun ke dalam bytecode bebas platform. 2. JVM menukar bytecode ke dalam kod mesin untuk platform tertentu, memastikan operasi silang platform tetapi prestasi mungkin berbeza.

Multithreading adalah penting dalam pengaturcaraan moden kerana ia dapat meningkatkan respons program dan penggunaan sumber dan mengendalikan tugas serentak yang kompleks. JVM memastikan konsistensi dan kecekapan multithreads pada sistem operasi yang berbeza melalui pemetaan benang, mekanisme penjadualan dan mekanisme kunci penyegerakan.


Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Dreamweaver CS6
Alat pembangunan web visual

MantisBT
Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

VSCode Windows 64-bit Muat Turun
Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan