Collections: SimpleSet

Материал из Вики ИТ мехмата ЮФУ
(перенаправлено с «Unit Collections: SimpleSet»)
Перейти к: навигация, поиск

Интерфейс

type SimpleSet<DataType> = class
  /// Создает пустое множество
  constructor Create;

  /// Добавляет элемент x во множество, если его там еще нет  
  procedure Add(x: DataType);

  /// Удаляет элемент x из множества, если он там есть
  procedure Remove(x: DataType);
 
  /// Возвращает истину, если множество содержит элемент x         
  function Contains(x: DataType): boolean;   
 
  ///Выводит содержимое множества на консоль
  procedure Println();
end;

Реализация

interface

type 
  /// Шаблон класса SimpleSet [Простое множество]
  SimpleSet<DataType> = class 
  private
    /// Элементы множества
    data := new DynArray<DataType>;
 
  public
    /// <summary>
    /// Добавляет элемент во множество, если его там еще нет
    /// </summary>
    /// <param name="x">Добавляемый элемент</param>    
    procedure Add(x: DataType);
    /// <summary>
    /// Удаляет элемент из множества, если он там есть
    /// </summary>
    /// <param name="x">Удаляемый элемент</param>
    procedure Remove(x: DataType);
 
    /// <summary>
    /// Возвращает истину, если множество содержит элемент
    /// </summary>
    /// <param name="x">Искомый элемент</param>          
    function Contains(x: DataType): boolean;   
 
    // ---------------------------------- Вывод ----------------------------------
    ///Выводит содержимое множества на консоль
    procedure Println();
end;

implementation

// ---------------------------- Стандартные методы ---------------------------
{Добавляет элемент x во множество, если его там еще нет}     
procedure SimpleSet<DataType>.Add(x: DataType);
begin
  if data.Find(x) = -1 then 
    data.Add(x);
end;
 
{Удаляет элемент x из множества, если он там есть}
procedure SimpleSet<DataType>.Remove(x: DataType);
begin
  var xPos := data.Find(x);
  if xPos <> -1 then
    data.Remove(xPos);
end;
 
{Возвращает истину, если множество содержит элемент x}    
function SimpleSet<DataType>.Contains(x: DataType): boolean;
begin
  result := (data.Find(x) <> -1);
end;
 
// ---------------------------------- Вывод ----------------------------------
 {Выводит содержимое множества на консоль}
procedure SimpleSet<DataType>.Println();
begin
  data.Println;
end;

Примеры использования

uses Collections;

begin
  // Создание нового объекта простого множества
  var ss := new SimpleSet<integer>;
  
  // Добавление элемента во множество
  ss.Add(5);  ss.Add(-32);  ss.Add(-7);  ss.Add(43);
  
  // Вывод множества
  writeln('Содержимое множества:');
  ss.Println;   
  writeln();
  
  // Проверка, содержится ли элемент во множестве
  writeln('97 содержится во множестве: ', ss.Contains(97));
  writeln('5 содержится во множестве: ', ss.Contains(5));
  writeln();
  
  // Удаление элемента из множества
  ss.Remove(8);
  ss.Remove(-32);
  
  writeln('Содержимое множества после удаления элементов:');
  ss.Println;   writeln();
end.

См. также

Collections (полный текст модуля):