Экзаменационный билет №18

1.Организация доступа по имени

Структура памяти

Структура данных

Возможные задания f(возможный способ - табличное задание функции):

  1. Таблица-последовательность строк(записей)
  2. Запись может состоять из нескольких полей
  3. Одно из полей должно задавать имя записи(ключ),остальные поля образуют тело записи.

Операции под таблицей:

Таблица - динамическая структура данных.

Базисное множество - семейство линейных структур из записей, базисное отношение включения определяется операциями вставки и удаления записей.

Варианты расширения понятия таблицы:

Принцип реализации таблиц:

Введение различных способов предполагает явное или неявное существование разных типов ситуаций при использовании таблиц.

По организации способа доступа таблицы делятся на следующие категории:

Просматриваемые таблицы

Порядок расположения элементов никак не связан со значениями ключей. Поэтому поиск элемента по ключу осуществляется обычным просмотром всех элементов таблицы, начиная с первого и до искомого

Ключ Информация
08 ...
33 ...
47 ...
25 ...
18 ...

Таким образом, при удалении элемента надо:

Поскольку операция поиска возвращает искомый элемент и не сообщает о месте его размещения в списке, при реализации операции удаления элемента из списка приходится либо

Алгоритм удаления элемента из просматриваемой таблицы-списка по варианту a) приведен на рисунке.

Текст программы, соответствующий приведенному алгоритму

struct Item
{
    int key;
    Type info;
    Item *next;
};
Item *ptab; /*указатель на начало таблицы */
int del1(int k)
{
    Item *cur, *prev;
    cur = ptab;
/*проверяем, есть ли в таблице элементы */
    if(!cur)
        return -1; /*таблица пуста – отказ */
/*возможно, требуется удалить первый элемент таблицы */
    if(cur->key == k)
    {
    /* удаляем первый элемент */
        ptab = cur->next;
        delInfo(cur->info);
        delete cur;
        return 0;
    }
/* ищем удаляемый элемент среди других элементов таблицы */
    while(cur->next)
    {
    /* есть другие элементы */
        prev = cur;
        cur = cur->next;
        if(cur->key == k)
        {
        /* нашли элемент, который надо удалить */
            prev->next = cur->next;
            delInfo(cur->info);
            delete cur;
            return 0;
        }
    }
/* естественный выход из цикла – в таблице нет элемента с ключом k */
    return -1;
}

2. Роль гипотез о росте структур при разработке систем управления памятью путем перепаковки

Формирование гипотез происходит в результате теоретического анализа модели решаемой задачи или может быть выполнено на основе статистических данных, получаемых в ходе вычислительных экспериментов с проектируемой программной системой.

Гипотеза 1: Стеки используются с одинаковой интенсивностью, память разделяется между стеками поровну.

Гипотеза 2: Интенсивность использования стеков различается.

Гипотеза 3: Использование вероятностных предположений о поведении стеков.