Міністерство освіти і науки України
Вінницький національний технічний університет
Факультет інформаційних технологій та комп’ютерної інженерії
Кафедра комп’ютерних наук
Лабораторна робота № 2
З дисципліни: “Теорія алгоритмів”
Мета роботи: Реалізувати dequeue, стек, очередь.
Завдання для виконання
Варіант 1
Очередь - это контейнер, типа “первый вошел, первый вышел” (FIFO). То есть, вы помещаете вещь в конец, а получаете ее с другого конца. Таким образом, порядок, в котором вы помещаете вещи в контейнер, остается тем же самым, в котором они выходят. LinkedList имеет методы для поддержки поведения очереди, так что он может быть использован для создания класса Queue. Реализуйте это.
Реализуйте стек с помощью LinkedList
Реализуйте дек с помощью LinkedList
Создайте генератор, который производит символьные имена ваших любимых фильмов (вы можете использовать "Матрица" или "Звездные войны" для сигнализации), и зациклите его на начало, когда имена закончатся. Используйте утилиту в com.bruceeckel.util для заполнения массива, ArrayList, LinkedList и обоих типов Set, затем напечатайте каждый контейнер.
Определить, является ли натуральное число простым
Хід роботи
Завдання 1 – 5
using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication7
{
class Program
{
static void Main(string[] args)
{
Queue queue = new Queue();
queue.Enqueue(2);
queue.Enqueue(24);
var simple = SimpleNumber.isSimple(3);
Generator generator = new Generator();
generator.getRandom();
Console.ReadKey();
}
}
Завдання 1:
public class Queue
{
LinkedList<int> numbers = new LinkedList<int>();
//Enqueue: добавляет элемент в конец очереди
public void Enqueue(int value)
{
numbers.AddLast(value);
}
//Dequeue: извлекает и возвращает первый элемент очереди
public int Dequeue()
{
int z = numbers.First();
numbers.RemoveFirst();
return z;
}
//Peek: просто возвращает первый элемент из начала очереди без его удаления
public int Peek()
{
return numbers.First();
}
}
Завдання 2:
public class Stack
{
LinkedList<int> numbers = new LinkedList<int>();
//Push: добавляет элемент в стек на первое место
public void Push(int value)
{
numbers.AddFirst(value);
}
//Pop: извлекает и возвращает первый элемент из стека
public int Pop()
{
int z = numbers.First();
numbers.RemoveFirst();
return z;
}
//Peek: просто возвращает первый элемент из стека без его удаления
public int Peek()
{
return numbers.First();
}
}
Завдання 3:
public class Deque
{
LinkedList<int> numbers = new LinkedList<int>();
//push_front Добавить (положить) в начало дека новый элемент
public void PushFront(int value)
{
numbers.AddFirst(value);
}
//push_back Добавить (положить) в конец дека новый элемент
public void PushBack(int value)
{
numbers.AddLast(value);
}
//pop_front Извлечь из дека первый элемент
public void PopFront()
{
numbers.RemoveFirst();
}
//pop_back Извлечь из дека последний элемент
public void PopBack()
{
numbers.RemoveLast();
}
//front Узнать значение первого элемента (не удаляя его)
public int Front()
{
return numbers.First();
}
//back Узнать значение последнего элемента (не удаляя его)
public int Back()
{
return numbers.Last();
}
//size Узнать количество элементов в деке
public int size()
{
return numbers.Count();
}
//clear Очистить дек (удалить из него все элементы)
public void Clear()
{
numbers.Clear();
}
}
Завдання 4:
public class Generator
{
ArrayList movies = new ArrayList();
private void FillMovies()
{
string[] films = new string[] { "Матрица", "Матрица 2", "Матрица 3",
"Звездные войны ep.1", "Звездные войны ep.2 ",
"Звездные войны ep.3", "Звездные войны ep.3",
"Звездные войны ep.4", "Звездные войны ep.5",
"Звездные войны ep.6"};
movies.AddRange(films);
}
public Generator()
{
FillMovies();
}
public void getRandom()
{
Random rnd = new Random();
for (int i = 0; i < movies.Count; i++)
{
int randomIndex = (int)rnd.Next(0, 10);
Console.WriteLine(movies[randomIndex]);
}
}
}
Завдання 5:
public static class SimpleNumber
{
public static bool isSimple(int value)
{
bool result = true;
for (int i = 2; i <= value / 2; i++)
{
if (value % i == 0)
{
result = false;
break;
}
}
return result;
}
}
}
Висновок
Під час виконання лабораторної роботи було реалізовано dequeue, стек, очередь за допомогою Linked List в середовищі Visual Studio 2013 мовою С#.