Студопедия

Главная страница Случайная страница

Разделы сайта

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






  • Сервис онлайн-записи на собственном Telegram-боте
    Тот, кто работает в сфере услуг, знает — без ведения записи клиентов никуда. Мало того, что нужно видеть свое расписание, но и напоминать клиентам о визитах тоже. Нашли самый бюджетный и оптимальный вариант: сервис VisitTime.
    Для новых пользователей первый месяц бесплатно.
    Чат-бот для мастеров и специалистов, который упрощает ведение записей:
    Сам записывает клиентов и напоминает им о визите;
    Персонализирует скидки, чаевые, кэшбэк и предоплаты;
    Увеличивает доходимость и помогает больше зарабатывать;
    Начать пользоваться сервисом
  • Protected. fHead: pItem; // поле - указатель на начало списка






    fHead: pItem; // поле - указатель на начало списка

    fSize: Word; // поле - число элементов списка

    Public

    // свойство – указатель на начало списка (доступ по чтению)

    property Head: pItem read fHead;

    // свойство - число элементов списка (доступ по чтению)

    property Size: Word read fSize;

    // Включение элемента со значением v после элемента с адресом Addr

    procedure InsertAfter(Addr: pItem; v: tValue);

    // Включение элемента со значением v перед элементом с адресом Addr

    procedure InsertBefore(Addr: pItem; v: tValue);

    // Исключение из списка элемента после элемента с адресом Addr

    function DeleteAfter(Addr: pItem): tValue;

    function Delete(Addr: pItem): tValue; // исключение элемента с адресом Addr

    // Поиск в списке элемента со значением v и возвращение его адреса

    function Search(v: tValue): pItem;

    // Включение элемента со значением v в начало списка

    procedure InsertHead(v: tValue);

    // Включение элемента со значением v в конец списка

    procedure InsertRear(v: tValue);

    function DeleteHead: tValue; // исключение элемента из начала списка

    function DeleteRear: tValue; // исключение элемента из конца списка

    function Empty: Boolean; // возвращение true, если список пуст

    procedure Clear; // очистка списка

    constructor Create; // конструктор - создание пустого списка

    destructor Destroy; override; // деструктор - удаление списка

    end; // class tList

    4. Реализация основных операций над односвязным списком

    Включение элемента со значением v после элемента с адресом Addr:

    Реализация операции приведена ниже. Предполагается, что адрес Addr отличен от nil и элемент с адресом Addr присутствует в списке (эти ситуации должны быть проверены в вызывающей программе). Если список пуст, то новый элемент включается в начало списка.

    procedure tList.InsertAfter(Addr: pItem; v: tValue);

    Var

    NewItem: pItem; // вспомогательный указатель на новый элемент

    Begin

    NewItem: = New(pItem); // выделение памяти под новый элемент списка

    NewItem^.Value: = v;

    if Empty

    then begin // если список пуст, включаем в его начало

    NewItem^.Next: = nil;

    fHead: = NewItem;

    End

    else begin // список не пуст - включаем после элемента с адресом Addr

    NewItem^.Next: = Addr^.Next;

    Addr^.Next: = NewItem;

    end;

    Inc(fSize); // увеличение числа элементов списка на 1

    end; // procedure tList.InsertAfter

    Включение элемента со значением v в список перед элементом с адресом Addr может быть выполнено следующим образом. Сначала новый элемент включается после элемента с адресом Addr, а затем происходит обмен содержательными полями между включенным элементом и элементом с адресом Addr. Предполагается, что адрес Addr отличен от nil, и элемент с адресом Addr присутствует в списке. Если список пуст, то новый элемент включается в начало списка.

    procedure tList.InsertBefore(Addr: pItem; v: tValue);

    Var

    NewItem: pItem; // вспомогательный указатель на новый элемент

    Begin

    NewItem: = New(pItem); // выделение памяти под новый элемент списка

    if Empty

    then begin // если список пуст, включаем в его начало

    NewItem^.Value: = v;

    NewItem^.Next: = nil;

    fHead: = NewItem;

    End

    else begin // иначе обмен содержимым элементов NewItem^ и Addr^

    NewItem^: = Addr^;

    Addr^.Value: = v;

    Addr^.Next: = NewItem;

    end;

    Inc(fSize); // увеличение числа элементов списка на 1

    end; // procedure tList.InsertBefore

    Исключение элемента, следующего за элементом с адресом Addr:

    function tList.DeleteAfter(Addr: pItem): tValue;

    Var

    DisItem: pItem; // вспомогательный указатель на исключаемый элемент

    Begin

    if Addr^.Next= nil






    © 2023 :: MyLektsii.ru :: Мои Лекции
    Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав.
    Копирование текстов разрешено только с указанием индексируемой ссылки на источник.