![]() Главная страница Случайная страница Разделы сайта АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Else begin. Addr:= Addr^.Right; DeleteRight:= Delete(Addr);
Addr: = Addr^.Right; DeleteRight: = Delete(Addr); end; end; // function tDCList.DeleteRight Так же легко исключить элемент, стоящий слева от заданного. В этом случае необходимо проанализировать ситуацию Addr=fHead, которая означает, что исключаемый элемент отсутствует в списке. Операции исключения элементов из двусвязного списка DeleteRight и Delete неприменимы к пустому списку; при их реализации предполагается, что Addr< > nil, и элемент с заданным адресом присутствует в списке. Поиск элемента с заданным значением v в двусвязном списке выполняется так же как и поиск элемента в односвязном списке с той разницей, что указатель Next в функции Search заменяется на Right. 11. Циклический двусвязный список Так же, как и односвязный, двусвязный список может быть циклическим. Для двусвязного циклического списка отпадает необходимость хранения внешнего указателя на последний элемент списка, так как фактически он является элементом, расположенным слева от первого: Над циклическим двусвязным списком могут быть выполнены все операции, определенные для циклического односвязного списка. Класс tDCCircleList может быть описан следующим образом: Type tDCCircleList= class // класс - циклический двусвязный список Protected fHead: pItem; // поле - указатель на начало списка fSize: Word; // поле - число элементов списка Public // Свойство - число элементов списка (доступ по чтению и записи) property Size: Word read fSize write fSize; // Свойство - указатель на начало списка (доступ по чтению и записи) property Head: Word read fHead write fHead; // Включение элемента со значением v справа от элемента с адресом Addr procedure InsertRight(Addr: pItem; v: tValue); // Включение элемента со значением v слева от элемента с адресом Addr procedure InsertLeft(Addr: pItem; v: tValue); Забиваем Сайты В ТОП КУВАЛДОЙ - Уникальные возможности от SeoHammer
Каждая ссылка анализируется по трем пакетам оценки: SEO, Трафик и SMM.
SeoHammer делает продвижение сайта прозрачным и простым занятием.
Ссылки, вечные ссылки, статьи, упоминания, пресс-релизы - используйте по максимуму потенциал SeoHammer для продвижения вашего сайта.
Что умеет делать SeoHammer
— Продвижение в один клик, интеллектуальный подбор запросов, покупка самых лучших ссылок с высокой степенью качества у лучших бирж ссылок. — Регулярная проверка качества ссылок по более чем 100 показателям и ежедневный пересчет показателей качества проекта. — Все известные форматы ссылок: арендные ссылки, вечные ссылки, публикации (упоминания, мнения, отзывы, статьи, пресс-релизы). — SeoHammer покажет, где рост или падение, а также запросы, на которые нужно обратить внимание. SeoHammer еще предоставляет технологию Буст, она ускоряет продвижение в десятки раз, а первые результаты появляются уже в течение первых 7 дней. Зарегистрироваться и Начать продвижение // Исключение элемента справа от элемента с адресом Addr function DeleteRight(Addr: pItem): tValue; // Исключение из списка элемента с адресом Addr function Delete(Addr: pItem): tValue; // Включение элемента со значением v в начало списка procedure InsertHead(v: tValue); // Включение элемента со значением v в конец списка procedure InsertRear(v: tValue); function DeleteHead: tValue; // исключение из начала function DeleteRear: tValue; // исключение из конца // Возвращение адреса элемента со значением v function Search(v: tValue): pItem; function Empty: Boolean; // возвращение true, если список пуст procedure Clear; // очистка списка // Присоединение списка DCList2 справа procedure Concat(var DCList2: tDCCircleList); constructor Create; // конструктор - создание пустого списка destructor Destroy; override; // деструктор - удаление списка end; // tDCCircleList Класс tDCCircleList не является в данном описании наследником класса tDCList по следующим причинам: – поле Rear класса tDCList не используется; – вводится новая процедура Concat; – все методы класса tDCCircleList реализуются иначе, чем одноименные методы класса tDCList. 12. Реализация основных операций над двусвязным циклическим списком В этом разделе рассмотрим только новые для двусвязного циклического списка операции, реализацию методов, одноименных с методами класса tDCList, предлагается выполнить самостоятельно. Метод класса tDCCircleList, реализующий включение элемента в конец двусвязного циклического списка, имеет вид: procedure tDCCircleList.InsertRear(v: tValue); Var NewItem: pItem; // указатель на новый элемент Begin NewItem: = New(pItem); NewItem^.Value: = v; if Empty then begin // включение в пустой список NewItem^.Left: = NewItem; NewItem^.Right: = NewItem; fHead: = NewItem; end else begin // включение в непустой список NewItem^.Left: = fHead^.Left; NewItem^.Right: = fHead; fHead^.Left^.Right: =NewItem; fHead^.Left: =NewItem; end; Inc(fSize); // увеличение числа элементов списка на 1 end; // procedure tDCCircleList.InsertRear Включение элемента в начало двусвязного циклического списка. При реализации этой операции можно использовать следующий прием: включить элемент в конец, а затем перенести указатель fHead на стоящий слева от него включенный элемент. procedure tDCCircleList.InsertHead(v: tValue); Begin InsertRear(v); // включение элемента в конец fHead: = fHead^.Left; end; // procedure tDCCircleList.InsertHead Метод класса tDCCircleList, реализующий исключение элемента из конца двусвязного циклического списка, имеет вид: Сервис онлайн-записи на собственном Telegram-боте
Попробуйте сервис онлайн-записи VisitTime на основе вашего собственного Telegram-бота:— Разгрузит мастера, специалиста или компанию; — Позволит гибко управлять расписанием и загрузкой; — Разошлет оповещения о новых услугах или акциях; — Позволит принять оплату на карту/кошелек/счет; — Позволит записываться на групповые и персональные посещения; — Поможет получить от клиента отзывы о визите к вам; — Включает в себя сервис чаевых. Для новых пользователей первый месяц бесплатно. Зарегистрироваться в сервисе function tDCCircleList.DeleteRear: tValue; Var DisItem: pItem; Begin DisItem: = fHead^.Left; // исключаемый элемент - последний DeleteLast: = DisItem^.Value; // чтение последнего элемента списка if fHead=DisItem then fHead: = nil // исключается единственный элемент
|