MaterStudiorum.ru - домашняя страничка студента.
Минимум рекламы - максимум информации.


Авиация и космонавтика
Административное право
Арбитражный процесс
Архитектура
Астрология
Астрономия
Банковское дело
Безопасность жизнедеятельности
Биографии
Биология
Биология и химия
Биржевое дело
Ботаника и сельское хоз-во
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Военная кафедра
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Деньги и кредит
Естествознание
Журналистика
Зоология
Издательское дело и полиграфия
Инвестиции
Иностранный язык
Информатика
Информатика, программирование
Исторические личности
История
История техники
Кибернетика
Коммуникации и связь
Компьютерные науки
Косметология
Краткое содержание произведений
Криминалистика
Криминология
Криптология
Кулинария
Культура и искусство
Культурология
Литература и русский язык
Литература(зарубежная)
Логика
Логистика
Маркетинг
Математика
Медицина, здоровье
Медицинские науки
Международное публичное право
Международное частное право
Международные отношения
Менеджмент
Металлургия
Москвоведение
Музыка
Муниципальное право
Налоги, налогообложение
Наука и техника
Начертательная геометрия
Новейшая история, политология
Оккультизм и уфология
Остальные рефераты
Педагогика
Полиграфия
Политология
Право
Право, юриспруденция
Предпринимательство
Промышленность, производство
Психология
Психология, педагогика
Радиоэлектроника
Разное
Реклама
Религия и мифология
Риторика
Сексология
Социология
Статистика
Страхование
Строительные науки
Строительство
Схемотехника
Таможенная система
Теория государства и права
Теория организации
Теплотехника
Технология
Товароведение
Транспорт
Трудовое право
Туризм
Уголовное право и процесс
Управление
Управленческие науки
Физика
Физкультура и спорт
Философия
Финансовые науки
Финансы
Фотография
Химия
Хозяйственное право
Цифровые устройства
Экологическое право
Экология
Экономика
Экономико-математическое моделирование
Экономическая география
Экономическая теория
Эргономика
Этика
Юриспруденция
Языковедение
Языкознание, филология
    Начало -> Информатика, программирование -> Динамические структуры данных: очереди

Название:Динамические структуры данных: очереди
Просмотров:100
Раздел:Информатика, программирование
Ссылка:none(0 KB)
Описание:Очередь — это информационная структура, в которой для добавления элементов доступен только один конец, называемый хвостом, а для удаления — другой, называемый головой.

Часть полного текста документа:

Динамические структуры данных: очереди
    Очередь - это информационная структура, в которой для добавления элементов доступен только один конец, называемый хвостом, а для удаления - другой, называемый головой. В англоязычной литературе для обозначения очередей довольно часто используется аббревиатура FIFO (first-in-first-out - первый вошёл - первым вышел).
    Очередь разумнее всего моделировать, отобразив её на двунаправленный кольцевой список. В этом случае в заглавном звене будет присутствовать информация как об указателе на голову, так и на хвост очереди.
    Выделим типовые операции над очередями:
    добавление элемента в очередь (помещение в хвост);
    удаление элемента из очереди (удаление из головы);
    проверка, пуста ли очередь;
    очистка очереди.
    Вот модуль, содержание которого составляют реализованные типовые операции над очередями.
    {Язык Pascal}
    Unit Spisok2;
    Interface
    Type BT = LongInt;
    U = ^Zveno;
    Zveno = Record Inf : BT; N, P: U End;
    Procedure V_Och(Var First : U; X : BT);
    Procedure Iz_Och(Var First : U; Var X : BT);
    Procedure Ochistka(Var First: U);
    Function Pust(First : U) : Boolean;
    Implementation
    Procedure V_Och;
    Var Vsp : U;
    Begin
    New(Vsp);
    Vsp^.Inf := X;
    If First = Nil then begin Vsp^.N := Vsp; Vsp^.P := Vsp; First := Vsp end
    else begin Vsp^.N := First; Vsp^.P := First^.P; First^.P^.N := Vsp; First^.P := Vsp; end;
    End;
    Procedure Iz_Och;
    Var Vsp : U;
    Begin
    x:=first^.inf;
    if First^.p=first
    then begin
    dispose(first);
    first:= nil
    end
    else
    begin
    Vsp := First;
    First := First^.N;
    First^.P := Vsp^.P;
    Dispose(Vsp)
    end
    End;
    Procedure Ochistka;
    Var Vsp : BT;
    Begin
    While Not Pust(First) Do Iz_Och(First, Vsp)
    End;
    Function Pust;
    Begin
    Pust := First = Nil
    End;
    Begin
    End.
    // Язык С++
    #include
    #include
    #include
    #include
    typedef long BT;
    struct U{
    BT Inf;
    U *N, *P;};
    U *V_Och(U *First, BT X)
    { U *Vsp;
    Vsp = (U*) malloc (sizeof(U));
    Vsp->Inf=X;
    if (!First) {Vsp->N=Vsp; Vsp->P=Vsp; First=Vsp;}
    else {Vsp->N=First; Vsp->P=First->P; First->P->N=Vsp; First->P=Vsp;}
    return First;}
    U *Iz_Och(U *First, BT &X)
    { U *Vsp;
    X=First->Inf;
    if (First->P==First) {free(First); First=NULL;}
    else {Vsp=First; First=First->N; First->P=Vsp->P; free(Vsp);}
    return First;}
    int Pust(U *First)
    { return !First;}
    U *Ochistka(U *First)
    { BT Vsp;
    while (!Pust(First)) First=Iz_Och(First, Vsp);
    return First;
    }
    Пример. Напечатать в порядке возрастания первые n натуральных чисел, в разложение которых на простые множители входят только числа 2, 3, 5.
    Алгоритм решения. Введем три очереди x2, x3, x5, в которых будем хранить элементы, которые соответственно в 2, 3, 5 раз больше напечатанных, но еще не напечатаны. Рассмотрим наименьший из ненапечатанных элементов; пусть это x. ............



 
     

Вечно с вами © MaterStudiorum.ru