internal class LIFO : Stack, IDataStruture { public void Add(T item) { this.Push(item); } public T Remove() { return this.Pop(); } }
internal class FIFO : Queue, IDataStruture { public void Add(T item) { this.Enqueue(item); } public T Remove() { return this.Dequeue(); } }
public interface IDataStruture { void Add(T item); T Remove(); }
public class Adapter { private IDataStruture objStack = new LIFO(); private IDataStruture objQueue = new FIFO(); public void AddLIFO(T item) { objStack.Add(item); } public void AddFIFO(T item) { objQueue.Add(item); } public T RemoveLIFO() { return Remove(objStack); } public T RemoveFIFO() { return Remove(objQueue); } private T Remove(IDataStruture ds) { T item; item = ds.Remove(); return item; } }
Adapter adapter; public Form1() { InitializeComponent(); adapter = new Adapter(); }private void btnPush_Click(object sender, EventArgs e) { if (comboBox1.Text.Equals("LIFO")) foreach (string str in lstPush.CheckedItems) { adapter.AddLIFO(str); } else foreach (string str in lstPush.CheckedItems) { adapter.AddFIFO(str); } } private void btnPop_Click(object sender, EventArgs e) { if (comboBox1.Text.Equals("LIFO")) lstPop.Items.Add(adapter.RemoveLIFO()); else lstPop.Items.Add(adapter.RemoveFIFO()); }