Collections: SimpleSet — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(См. также)
Строка 22: Строка 22:
 
<source lang="Delphi">
 
<source lang="Delphi">
 
interface
 
interface
 +
 +
type
 +
  /// Шаблон класса SimpleSet [Простое множество]
 +
  SimpleSet<DataType> = class
 +
  private
 +
    /// Элементы множества
 +
    data := new DynArray<DataType>;
 
   
 
   
uses Nodes;   // для использования типа SingleNode<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
 
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;
  
 
</source>
 
</source>
  
 
== Примеры использования ==
 
== Примеры использования ==
 +
<source lang="Delphi">
 +
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.
 +
</source>
  
 
== См. также ==
 
== См. также ==

Версия 20:03, 30 апреля 2009

Интерфейс

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 (полный текст модуля):