cari
RumahJavajavaTutorialProgram Java untuk memasukkan elemen di bahagian bawah timbunan

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.

Program Java untuk memasukkan elemen di bahagian bawah timbunan

menggunakan rekursi

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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Adakah terdapat teknologi baru yang mengancam atau meningkatkan kemerdekaan platform Java?Adakah terdapat teknologi baru yang mengancam atau meningkatkan kemerdekaan platform Java?Apr 24, 2025 am 12:11 AM

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.

Apakah pelaksanaan JVM yang berbeza, dan adakah mereka semua menyediakan tahap kemerdekaan platform yang sama?Apakah pelaksanaan JVM yang berbeza, dan adakah mereka semua menyediakan tahap kemerdekaan platform yang sama?Apr 24, 2025 am 12:10 AM

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.

Bagaimanakah kebebasan platform mengurangkan kos pembangunan dan masa?Bagaimanakah kebebasan platform mengurangkan kos pembangunan dan masa?Apr 24, 2025 am 12:08 AM

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.

Bagaimanakah kemerdekaan platform Java memudahkan penggunaan semula kod?Bagaimanakah kemerdekaan platform Java memudahkan penggunaan semula kod?Apr 24, 2025 am 12:05 AM

Java'splatformindependencefacilitatescodereusebyallowbytytecodetorunonanyplatformWithAjvm.1) DeveloptersCanWriteCodeOnceforconsistentBeHavioracrossplatforms.2)

Bagaimana anda menyelesaikan masalah khusus platform dalam aplikasi Java?Bagaimana anda menyelesaikan masalah khusus platform dalam aplikasi Java?Apr 24, 2025 am 12:04 AM

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.

Bagaimanakah subsistem loader kelas dalam JVM menyumbang kepada kebebasan platform?Bagaimanakah subsistem loader kelas dalam JVM menyumbang kepada kebebasan platform?Apr 23, 2025 am 12:14 AM

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.

Adakah pengkompil Java menghasilkan kod khusus platform? Menjelaskan.Adakah pengkompil Java menghasilkan kod khusus platform? Menjelaskan.Apr 23, 2025 am 12:09 AM

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.

Bagaimanakah JVM mengendalikan multithreading pada sistem operasi yang berbeza?Bagaimanakah JVM mengendalikan multithreading pada sistem operasi yang berbeza?Apr 23, 2025 am 12:07 AM

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.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

MantisBT

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

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

VSCode Windows 64-bit Muat Turun

VSCode Windows 64-bit Muat Turun

Editor IDE percuma dan berkuasa yang dilancarkan oleh Microsoft

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan