Rumah > Java > javaTutorial > teks badan

Bagaimanakah anda mengendalikan kurungan dalam penukaran infix to postfix?

Barbara Streisand
Lepaskan: 2024-11-10 14:11:02
asal
792 orang telah melayarinya

How do you handle parentheses in infix to postfix conversion?

Mengendalikan Tanda Kurung dalam Penukaran Infix to Postfix

Pengenalan:
Apabila menukar ungkapan infix kepada ungkapan postfix, seseorang perlu mempertimbangkan cara mengendalikan kehadiran kurungan. Tanda kurung menentukan susunan operasi dan mengabaikan kepentingannya boleh membawa kepada hasil yang salah.

Mengendalikan Tanda Kurung:
Untuk mengendalikan kurungan dengan berkesan, kami menggunakan pendekatan berasaskan tindanan. Apabila kurungan pembukaan '(' ditemui dalam ungkapan infiks, ia ditolak ke tindanan. Apabila kurungan penutup ')' ditemui, kami memproses tindanan seperti berikut:

  1. Semasa tindanan tidak kosong dan bahagian atas tindanan bukan kurungan pembukaan '(', pop bahagian atas tindanan dan tambahkannya pada rentetan output.
  2. Jika tindanan kosong, kurungan tidak sepadan, menunjukkan ralat.
  3. Jika bahagian atas tindanan ialah kurungan pembuka '(', keluarkannya daripada tindanan.
  4. Pantaskan kurungan penutup ')' daripada ungkapan infix input.

Berbilang Lapisan Tanda Kurung:
Algoritma kami boleh mengendalikan berbilang lapisan kurungan secara rekursif Apabila kurungan pembukaan dicapai, proses diteruskan seperti yang diterangkan di atas yang dihadapi, ia akan mencetuskan proses yang sama, menyelesaikan setiap peringkat kurungan dengan berkesan.

Contoh Pelaksanaan:

Di Java, coretan kod berikut menunjukkan cara untuk menggabungkan pengendalian kurungan ke dalam kaedah penukaran infix to postfix:

// ... Existing code for infix to postfix conversion ...

// Opening (
if (in_fix.peek().type == 4) {   
    post_fix.push(in_fix.pop());
}

// Closing )
if(in_fix.peek().type == 5){
    while(!(post_fix.isEmpty() || post_fix.peek().type == 4)){
         postfixstr.append(post_fix.pop());
    }
    if (post_fix.isEmpty())
        ; // ERROR - unmatched )
    else
        post_fix.pop(); // pop the (
    in_fix.pop(); // pop the )
}

// ... Existing code for the rest of the algorithm ...
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah anda mengendalikan kurungan dalam penukaran infix to postfix?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan