Двусторонняя очередь (ДЕК) - 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); } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д