Итоговый контроль по дисциплине «Информатика и информационные технологии» Москва 2020 12.Линейные списки и очереди. Из динамических структур в программах чаще всего используются линейные списки, стеки, очереди и бинарные деревья. Они различаются способами связи отдельных элементов и допустимыми операциями. Линейные списки. Самый простой способ связать множество элементов — сделать так, чтобы каждый элемент содержал ссылку на следующий. Такой список называется однонаправленным (односвязным). Если добавить в каждый элемент вторую ссылку — на предыдущий элемент, получится двунаправленный список (двусвязный), если последний элемент связать указателем с первым, получится кольцевой список. Каждый элемент списка содержит ключ, идентифицирующий этот элемент. Ключ обычно бывает либо целым числом, либо строкой и является частью поля данных. В качестве ключа в процессе работы со списком могут выступать разные части поля данных (ключи разных элементов списка могут совпадать). struct Node{ 1nt d; Node *next; Node *prev; }; Рассмотрим двунаправленный линейный список. Для формирования списка и работы с ним требуется иметь по крайней мере один указатель — на начало списка. Удобно завести еще один указатель — на конец списка. Допустим, что список состоит из целых чисел, то есть описание элемента списка выглядит следующим образом: Стек — это частный случай однонаправленного списка, добавление элементов в который и выборка из которого выполняются с одного конца, называемого вершиной стека. При выборке элемент исключается из стека. Функция помещения в стек по традиции называется push, а выборки — pop. Указатель для работы со стеком (top) всегда ссылается на его вершину. Пример кода программы #1ncludestruct Nocle{ 1nt d; Node *p; }; Node * firstdnt d); void pushCNode **top. intd); intpop(Node **top); Очередь — это частный случай однонаправленного списка, добавление элементов в который выполняется в один конец, а выборка — из другого конца. В программировании очереди применяются, например, при моделировании, диспетчеризации задач операционной системой, буферизованном вводе/выводе. 24. Базовые типы данных и ссылочные типы. Базовые типы данных – это любые типы данных, заданные в системах управления базами данных изначально, т. е. присутствующие там по умолчанию (в отличие от пользовательского типа данных, который мы проанализируем сразу после прохождения типа данных базового). Прежде чем перейти к рассмотрению собственно базовых типов данных, перечислим, каких типов данные вообще бывают: 1) числовые данные; 2) логические данные; 3) строковые данные; 4) данные, определяющие дату и время; 5) идентификационные данные. Типы данных в C# можно разделить на типы-значения ( value type ) и ссылочные типы ( reference type ). В первую очередь они отличаются схемой наследования, местом размещения и представлением. Каждая переменная в Java имеет тип данных, которые разделены на две группы: Примитивные. Ссылки. Переменная занимает некоторое место в памяти в зависимости от ее типа данных. Примитив содержит значение переменной непосредственно в памяти, выделенной для нее. Например, число или символ. Ссылочный типа отличается еще называется ссылкой. Не содержит объект, но содержит ссылку на него, которая указывает на другое место в памяти, где он хранится. Через такую ссылку можете получить доступ к полям и методам ссылочного объекта. Допустимо иметь много разных переменных, ссылающихся на один и тот же объект. Это невозможно с примитивами. Ссылочные переменные хранят адрес ячейки памяти, в которой расположен определенный объект. То есть это “визитка” с адресом, имея которую мы можем найти наш объект в общей памяти и выполнять с ним некоторые манипуляции. Ссылка на любой объект в Java представляет собой ссылочную переменную. Как бы это выглядело с нашим объектом телевизора: TV telly = new TV(); Переменной типа TV с именем telly мы задаем ссылку на создаваемый объект типа TV. То есть, JVM выделяет память в куче под объект TV, создает его и адрес на его местоположение в памяти, кладется в переменную telly, которая хранится в стеке. Ссылочные переменные создаются с использованием определенных конструкторов классов. Они предназначены для доступа к объектам. Эти переменные объявляются с определенным типом, который не может быть изменен. Например, Employee, Puppy и т.д. Объекты класса и различные виды переменных массива подпадают под ссылочный тип данных. По умолчанию в Java значение любой переменной ссылки - null. Ссылочная переменная может применяться для обозначения любого объекта, объявленного или любого совместимого типа.