
- •Структуры и обработка данных
- •Введение
- •Лабораторная работа № 1
- •2.2. Стек
- •2.3. Очередь
- •3. Постановка задачи и рекомендации по выполнению
- •4. Контрольные вопросы
- •3. Постановка задачи и рекомендации по выполнению
- •3.1. Структура файла
- •3.2. Разработка функций и демонстрационной программы
- •3.3. Представление результатов лабораторной работы
- •3. Постановка задачи и рекомендации по выполнению
- •3.1. Структура файла списка изделий
- •3.2. Структура файла списка спецификаций
- •3.3. Разработка функций и демонстрационной программы
- •Ошибочные ситуации:
- •3.4. Представление результатов лабораторной работы
- •3. Постановка задачи и рекомендации по выполнению
- •3.1. Структура файла
- •3.2. Разработка функций и демонстрационной программы
- •3.3. Представление результатов лабораторной работы
- •4. Контрольные вопросы
- •Список литературы
Министерство общего и профессионального образования
Российской Федерации
НОВОСИБИРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ
УНИВЕРСИТЕТ
__________________________________________________________
Структуры и обработка данных
Методические указания к лабораторным работам
по курсу “Базы и банки данных”
для студентов 3 курса
факультета автоматики и вычислительной техники
(специальность 2202)
дневного отделения
Новосибирск
1996
Составители: В.А. Астапчук, канд. техн. наук, доц.
В.Б. Панова, ассистент
Рецензент М.М. Раздобреев, канд. техн. наук, доц.
Работа подготовлена на кафедре
автоматизированных систем обработки информации и управления
Новосибирский государственный
технический университет, 1996 г.
Введение
В данной работе рассматриваются структуры, используемые для размещения данных на внешних носителях. Основной структурой хранения является двоичный файл, определяемый как множество записей. Каждая запись представляется в виде совокупности фрагментов (полей) .
Внутренняя структура файла определяется связями между записями и может быть весьма разнообразной. В простейшем случае файл представляет множество однородных (имеющих одинаковый набор полей) записей фиксированной (постоянной) длины, расположенных в их естественной последовательности. В общем же случае записи файла связаны в некоторую списковую структуру.
Основная цель работы заключается в ознакомлении с разнообразием структур, используемых для хранения данных на внешних носителях и закреплении навыков программирования алгоритмов доступа к данным.
Изложение ведется применительно к стандартам языка C , хотя при выполнении заданий рекомендуется использовать приемы программирования, свойственные для C++[1]. Для каждого занятия определен перечень основных процедур, подлежащих разработке, при этом детали реализации остаются за исполнителем. Программа работ построена таким образом, что результаты предшествующих заданий максимально используются при выполнении очередного. Время, отводимое на выполнение заданий, включает домашнюю подготовку. Предполагается, что основные понятия, связанные со структурами данных, могут быть получены при изучении рекомендованной литературы или известны из курсов “Программирование” и “Базы и банки данных”.
Лабораторная работа № 1
ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ
1. ЦЕЛЬ РАБОТЫ
Изучить динамические структуры данных – двусвязный список, стек и очередь; приобрести практические навыки программирования таких структур данных на языках C и C++ при их размещении в оперативной памяти.
2. ОБЩИЕ СВЕДЕНИЯ
2.1. Двусвязный список
Двусвязный список – это линейная структура данных, каждый узел которого содержит указатель на предыдущий узел и указатель на последующий узел.
В общем случае узел такого списка можно представить в виде структуры:
struct node {
node *prev; //указатель на предыдущий узел
node *next; //указатель на следующий узел
data *d; //указатель на тип данных
};
В общем случае тип данных является составным, и его можно представить в виде соответствующего класса или структуры, например:
struct data {
int index;
char str[];
};
Для работы с двусвязным списком обычно используются следующие функции.
1) Функции добавления узлов:
prepend – добавляет узел c новым значением в начало списка;
append – добавляет узел c новым значением в конец списка;
insert – добавляет узел c новым значением в заданную позицию.
2) Функции удаления узлов:
remove – удаляет текущий узел;
delete – удаляет заданный узел (по номеру или по значению).
3) Функции доступа к узлам:
getFirst – возвращает указатель на первый узел;
getLast – возвращает указатель на последний узел;
current – возвращает указатель на текущий узел;
4) Функции перемещения по списку:
next – возвращает указатель на следующий узел и делает его
текущим узлом;
prev – возвращает указатель на предыдущий узел и делает его
текущим узлом;
last – возвращает указатель на последний узел и делает его
текущим узлом;
first – возвращает указатель на первый узел и делает его текущим
узлом.
Все эти функции возвращают значение NULL в случае неудачи.
5) Общие функции:
empty – возвращает 1, если список пуст, а иначе – 0;
count – возвращает число узлов в списке.