وارون‌سازی

یک جایگشت از اعداد $1, 2, \dots, n$ در یک پشتهStack) ) به نام $S$ به شما داده شده است. شما می‌خواهید با استفاده از مقداری حافظه‌ی کمکی این جایگشت را برعکس کرده و دوباره درون $S$ قرار دهید. یعنی در پایان کار باید وارون جایگشت در $S$ قرار گیرد. در هر عمل تنها می‌توان یک عنصر را از یک داده‌ساختار Pop کرد و به‌یک داده‌ساختار دیگر Push کرد. در هر کدام از حالات زیر امکان انجام این کار را بررسی کنید و گفته‌ی خود را اثبات نمایید.

  1. با یک پشته‌ی کمکی
  2. با دو پشته‌ی کمکی
  3. با یک پشته و یک صف (Queue) کمکی