Двусторонняя очередь (ДЕК) - C#
Формулировка задачи:
Помогите пожалуйста реализовать дек :
Нарисовал uml диаграмму , но как сделать не знаю , должно быть 3 класса , все в джинерике и в ООП стиле (
Помогите )))
Решение задачи: «Двусторонняя очередь (ДЕК)»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
class Deq<T>
{
T[] array;
public Deq()
{
array = new T[0];
}
public int Count
{
get
{
return array.Length;
}
}
public bool Empty
{
get
{
return array.Length > 0;
}
}
public void PushBack(T item)
{
Array.Resize(ref array, array.Length + 1);
array[array.Length - 1] = item;
}
public void PushFront(T item)
{
Array.Resize(ref array, array.Length + 1);
for (int i = array.Length - 1; i > 0; i--)
array[i] = array[i - 1];
array[0] = item;
}
public T PopBack()
{
T item = array[array.Length - 1];
Array.Resize(ref array, array.Length - 1);
return item;
}
public T PopFront()
{
T item = array[0];
for (int i = 0; i < array.Length - 1; i++)
array[i] = array[i + 1];
Array.Resize(ref array, array.Length - 1);
return item;
}
public T Front
{
get
{
return array[0];
}
}
public T Back
{
get
{
return array[array.Length - 1];
}
}
}
class Program
{
static void Main(string[] args)
{
Deq<int> deq = new Deq<int>();
Deq<int> d = new Deq<int>();
for (int i = 0; i < 10; i++)
{
deq.PushBack(i);
deq.PushFront(i);
d.PushBack(i);
d.PushFront(i);
}
Console.WriteLine(deq.Count);
while (deq.Empty)
Console.Write(deq.PopFront() + " ");
Console.WriteLine();
Console.WriteLine(new string('-', 10));
while (d.Empty)
Console.Write(d.PopBack() + " ");
Console.ReadKey(true);
}
}