تبدیل عبارت میانوندی با پرانتز به پسوندی - هفت خط کد انجمن پرسش و پاسخ برنامه نویسی

تبدیل عبارت میانوندی با پرانتز به پسوندی

+1 امتیاز

چطوری میشه عبارت های میانوندی رو به پسوندی تبدیل کرد ؟؟ آیا الگوریتم خاصی داره ؟

مثلا :  

voroodi : 1 * ( (3+2) -( 1 / 5 ) )
khorooji : 132+15/-*

 

سوال شده مهر 20, 1393  بوسیله ی Xavi (امتیاز 627)   24 83 110

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

می تونی از الگوریتم  Shaunting yard استفاده کنی .

برای پیاده سازی

باید یک queueبرای خروجی 

و یک stack برای ذخیره اپراتور ها بسازید.

بعد عبارت رو پیمایش کنید هر جا که عدد بود به queue اضافه کنید.

و هر جا که +/*- بود اول داخل stack رو چک کنید اپراتور هایی که اولویت یکسان یا کمتر  دارند رو  از stack بردارید و به queue اضافه کنیید نهایتا هم اون اپراتور رو به stack اضافه کنید .

برای پرانتز هم  اگر پرانتز باز بود به stack اضافه کنید اگر پرانتز بسته بود تا رسیدن به پرانتز بسته عناصر رو از داخل stack به queue بفرستید .

نهایتا هم محتوای queue میشه عبارت پسوندی مورد نظر.

 

string processing, infix, postifix

 

پاسخ داده شده مهر 22, 1393 بوسیله ی BlueBlade (امتیاز 15,315)   15 18 89
ویرایش شده دی 30, 1393 بوسیله ی haniye sarbazi
...