//This method applies DFS algorithm to check if adjacent nodes are depended or not private void StronglyConnect(Vertex v) { v.Index = _Index; v.Lowlink = _Index; _Index++; _Stack.push(v); foreach (Vertex w in v.Dependencies) { if (w.Index < 0) { StronglyConnect(w); v.Lowlink = Math.Min(v.Lowlink, w.Lowlink); } else if (_Stack.Contains(w)) { v.Lowlink = Math.Min(v.Lowlink, w.Index); } } if (v.Lowlink == v.Index) { List <Vertex> cycle = new List <Vertex>(); Vertex w; do { w = _Stack.pop(); cycle.Add(w); } while (v != w); _StronglyConnectedComponents.Add(cycle); } }
public void ContainsExceptionTest(string contains, Type expectedEx) { var stack = new MyStack <string>(); void Result() => stack.Contains(contains); Assert.Throws(expectedEx, Result); }
static void Main(string[] args) { MyStack<int> stack = new MyStack<int>(); stack.Push(9); stack.Push(10); stack.Pop(); Console.WriteLine(stack.Contains(10)); }
public void TestContains() { var stack = new MyStack <int>(); for (int i = 0; i < 10; i++) { stack.Push(i); } Assert.AreEqual(10, stack.Count); for (int i = 0; i < 10; i++) { Assert.AreEqual(10 - i, stack.Count); Assert.IsTrue(stack.Contains(9 - i)); stack.Pop(); Assert.IsFalse(stack.Contains(9 - i)); Assert.AreEqual(9 - i, stack.Count); } }
public void PushInStack46Elemets_StackContains_ContainsReturnFalse() { var stack = new MyStack <int>(); for (int i = 0; i < 10; i++) { stack.Push(i); } Assert.AreEqual(10, stack.Count); for (int i = 0; i < 10; i++) { Assert.AreEqual(10 - i, stack.Count); Assert.IsTrue(stack.Contains(9 - i)); stack.Pop(); Assert.IsFalse(stack.Contains(9 - i)); Assert.AreEqual(9 - i, stack.Count); } }
static void Main() { MyStack<int> stack = new MyStack<int>(); // push some elements to test if work correctly stack.Push(5); stack.Push(10); stack.Push(15); stack.Push(80); stack.Push(-95); // test foreach foreach (var item in stack) { Console.WriteLine(item); } Console.WriteLine(); Console.WriteLine(stack.Count); Console.WriteLine(stack.Capacity); Console.WriteLine(); // test pop Console.WriteLine(stack.Pop()); Console.WriteLine(stack.Pop()); Console.WriteLine(); // test contains method Console.WriteLine(stack.Contains(-95)); Console.WriteLine(stack.Contains(10)); Console.WriteLine(); // test if count and capacity work correctly after pop elements Console.WriteLine(stack.Count); Console.WriteLine(stack.Capacity); // test toArray and toString var stackAsArray = stack.ToArray(); Console.WriteLine(string.Join(", ", stackAsArray)); Console.WriteLine(stack.ToString()); }
public void ContainsTest(List <int> source, List <int> contains, List <bool> expectedResult) { var stack = new MyStack <int>(); foreach (var item in source) { stack.Push(item); } var result = contains.Select(item => stack.Contains(item)).ToList(); Assert.That(result, Is.EqualTo(expectedResult)); }
public void Removes_Last_Item() { var stack = new MyStack <int> { 1, 2, 3, 4, 5 }; int expectedLength = 4; int item = stack.GetAndRemove(); int actualLength = stack.Count; Assert.IsFalse(stack.Contains(item)); Assert.AreEqual(expectedLength, actualLength); }
public void StackContainsTest() { var stack = new MyStack <int>(); var rand = new Random(); var list = new List <int>(); for (int i = 0; i < 46; i++) { var last = rand.Next(0, 1000); stack.Push(last); list.Add(last); } list.Sort(); foreach (var obj in list) { Assert.IsTrue(stack.Contains(obj)); } }
static void Main(string[] args) { var myStack = new MyStack <int>(); myStack.Push(1); myStack.Push(2); myStack.Push(3); myStack.Push(4); Console.WriteLine("First:" + myStack.Peek()); Console.WriteLine("Count:" + myStack.Count()); Console.WriteLine("First:" + myStack.Pop()); Console.WriteLine("Second:" + myStack.Pop()); Console.WriteLine("Count:" + myStack.Count()); myStack.Push(3); Console.WriteLine(myStack.Contains(5)); Console.WriteLine("Count:" + myStack.Count()); Console.WriteLine("First:" + myStack.Peek()); myStack.Clear(); Console.ReadKey(); }
static void Main(string[] args) { MyStack <double> ms = new MyStack <double>(); ms.Push(1); ms.Push(2); ms.Push(3); ms.Push(4); ms.Push(5); ms.Push(6); try { Console.WriteLine(ms.Pop()); Console.WriteLine(ms.Peek()); Console.WriteLine(ms.Contains(6)); } catch (Exception e) { Console.WriteLine(e.Message); } Console.WriteLine(ms.Print()); Console.WriteLine(ms.Count); Console.ReadLine(); }
static void MainMenu() { //Флаг правильности ввода bool ok = true; //Флаг завершения работы bool Finish = false; // Стек элементов иерархии MyStack <Challenge> ExamsStack = new MyStack <Challenge>(); // Вспомогательная переменная для заполнения стека Random rnd = new Random(); Challenge ElementToAdd = null; // Первоначальное заполнение стека for (ushort i = 0; i < 1000; i++) { switch (rnd.Next(4)) { case 0: ElementToAdd = new Challenge(); break; case 1: ElementToAdd = new Test(); break; case 2: ElementToAdd = new Exam(); break; case 3: ElementToAdd = new GraduateExam(); break; } ExamsStack.Push(ElementToAdd); } Console.WriteLine("Успешно создан новый стек емкостью {0} с количеством элементов {1}.", ExamsStack.Capacity, ExamsStack.Count); do { do { Console.Clear(); //Вывод меню Console.WriteLine(); Console.WriteLine("1 - Создание нового стека"); Console.WriteLine("2 - Печать стека"); Console.WriteLine("3 - Удалить элемент"); Console.WriteLine("4 - Добавить новый элемент"); Console.WriteLine("5 - Перевод в массив с помощью метода ToArray"); Console.WriteLine("6 - Перевод в массив с помощью метода CopyTo"); Console.WriteLine("7 - Клонирование коллекции"); Console.WriteLine("8 - Поиск элемента"); Console.WriteLine("9 - Выход"); //Выбор пункта меню и вызов соответствующих функций int ChosenOption = Int32.Parse(Console.ReadLine()); Console.WriteLine(); switch (ChosenOption) { // Создание новой таблицы case 1: ExamsStack.Clear(); // Ввод количества элементов int NumberToAdd = InputOutput.InputNumber(10, 1000); ExamsStack = new MyStack <Challenge>(NumberToAdd); for (ushort i = 0; i < NumberToAdd; i++) { switch (rnd.Next(4)) { case 0: ElementToAdd = new Challenge(); break; case 1: ElementToAdd = new Test(); break; case 2: ElementToAdd = new Exam(); break; case 3: ElementToAdd = new GraduateExam(); break; } ExamsStack.Push(ElementToAdd); } Console.WriteLine("Успешно создан новый стек емкостью {0} с количеством элементов {1}.", ExamsStack.Capacity, ExamsStack.Count); ok = true; break; // Печать таблицы case 2: foreach (Challenge Element in ExamsStack) { Element.Show(); } ok = true; break; // Удаление элемента case 3: ExamsStack.Pop(); Console.WriteLine("Последний элемент стека удален."); ok = true; break; // Создание элемента case 4: // Тип создаваемого объекта int Option = 0; ChooseTypeMenu(out Option); switch (Option) { case 1: Console.Write("Введите ФИО студента: "); string Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); ushort TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); ushort TasksDone = UInt16.Parse(Console.ReadLine()); ExamsStack.Push(new Challenge(Name, TasksTotal, TasksDone)); break; case 2: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); ExamsStack.Push(new Test(Name, TasksTotal, TasksDone)); break; case 3: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); Console.Write("Введите предмет, по которому был экзамен: "); string Subject = Console.ReadLine(); ExamsStack.Push(new Exam(Name, Subject, TasksTotal, TasksDone)); break; case 4: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); Console.Write("Введите предмет, по которому был экзамен: "); Subject = Console.ReadLine(); Console.Write("Введите учебное заведение, откуда выпускается студент: "); string Organisation = Console.ReadLine(); ExamsStack.Push(new GraduateExam(Name, Subject, Organisation, TasksTotal, TasksDone)); break; } Console.WriteLine("Текущая емкость коллекции равна {0}, количество элементов равно {1}.", ExamsStack.Capacity, ExamsStack.Count); ok = true; break; // Перевод в массив с помощью метода ToArray case 5: Challenge[] ExamsArray = ExamsStack.ToArray(); foreach (Challenge Element in ExamsArray) { Element.Show(); } ok = true; break; // Перевод в массив с помощью метода CopyTo case 6: ExamsArray = new Challenge[ExamsStack.Count]; ExamsStack.CopyTo(ExamsArray, 0); foreach (Challenge Element in ExamsArray) { Element.Show(); } ok = true; break; // Клонирование стека case 7: MyStack <Challenge> ClonedStack = ExamsStack.Clone() as MyStack <Challenge>; foreach (Challenge Element in ClonedStack) { Element.Show(); } ok = true; break; // Поиск элемента по ключу case 8: Option = 0; ChooseTypeMenu(out Option); switch (Option) { case 1: Console.Write("Введите ФИО студента: "); string Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); ushort TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); ushort TasksDone = UInt16.Parse(Console.ReadLine()); bool contains = ExamsStack.Contains(new Challenge(Name, TasksTotal, TasksDone)); Console.WriteLine("В коллекции присутствует указанный элемент: {0}", ExamsStack.Contains(new Challenge(Name, TasksTotal, TasksDone))); break; case 2: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); Console.WriteLine("В коллекции присутствует указанный элемент: {0}", ExamsStack.Contains(new Test(Name, TasksTotal, TasksDone))); break; case 3: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); Console.Write("Введите предмет, по которому был экзамен: "); string Subject = Console.ReadLine(); Console.WriteLine("В коллекции присутствует указанный элемент: {0}", ExamsStack.Contains(new Exam(Name, Subject, TasksTotal, TasksDone))); break; case 4: Console.Write("Введите ФИО студента: "); Name = Console.ReadLine(); Console.Write("Введите общее количество задач: "); TasksTotal = UInt16.Parse(Console.ReadLine()); Console.Write("Введите количество решенных задач: "); TasksDone = UInt16.Parse(Console.ReadLine()); Console.Write("Введите предмет, по которому был экзамен: "); Subject = Console.ReadLine(); Console.Write("Введите учебное заведение, откуда выпускается студент: "); string Organisation = Console.ReadLine(); Console.WriteLine("В коллекции присутствует указанный элемент: {0}", ExamsStack.Contains(new GraduateExam(Name, Subject, Organisation, TasksTotal, TasksDone))); break; } ok = true; break; case 9: Finish = ok = true; break; default: ok = false; break; } } while (!ok); if (!Finish && ok) { Console.WriteLine("Нажмите любую клавишу..."); Console.ReadKey(); } } while (!Finish); }
public void Item_Exists() { Assert.IsTrue(stack.Contains(3)); }