Здравствуйте!
Нужна срочная помощь по решению этой лабы! Вся надежда на вас!
У меня возникли сложности с таким вопросом:
Написать программу для работы с просматриваемой таблицей по запросам оператора.
Просматриваемая таблица организована вектором; каждый элемент таблицы имеет следующую структуру:
struct Node{
int key; /*ключ элемента*/
Item *info; /*указатель на информацию*/
};
Максимальный размер таблицы ограничен (для задания максимального размера таблицы использовать константу - например, const int SIZE = ...;)
Указатель на информацию определяет список элементов с одинаковыми значениями ключей.
Элемент списка имеет следующую структуру:
struct Item{
int relese; /* номер версии*/
char *string; /*указатель на строку символов*/
Item *next; /*указатель на следующий элемент */
};
Предусмотреть следующие операции:
-включение нового элемента в таблицу при условии, что в таблице могут находиться несколько элементов с одинаковыми ключами и разными номерами версий (номер версии элемента формирует как порядковый номер элемента в последовательности элементов с одинаковыми ключами, определяемый при включении элемента в таблицу);
-удаление из таблицы всех версий элемента, заданного ключом, или конкретной (заданной) версии элемента, также заданного своим ключом, без реорганизации таблицы;
-поиск в таблице всех версий элемента, заданного ключом, или конкретной(заданной) версии элемента, также заданного своим ключом. Результатом поиска должна быть новая таблица, содержащая найденные элементы;
-вывод содержимого таблицы на экран.
Разработать два варианта программы:
а) и сама таблица, и информация, относящаяся к элементу таблицы, хранятся в основной памяти;
б) и сама таблица, и информация, относящаяся к элементу таблицы, хранятся во внешней памяти(используется двоичной файл произвольного доступа).Все операции выполняются с таблицей, размещенной в основной памяти. Таблица считывается из файла(или создается в первый раз) в начале сеанса работы и записывается в файл в конце сеанса работы. Информация, относящаяся к элементу таблицы, записывается в файл сразу же при выполнении операции включения в таблицу. Имя файла вводится по запросу из программы.
Примечания:
1. Программа должна содержать несколько функций; функция main должна выполнять: вывод меню, ввод и анализ ответа, вызов на исполнение требуемой функции;
2. В программе нужно предусмотреть проверку правильности ввода данных;
3 для варианта б) следует модифицировать структуру, определяющую элемент таблицы, включив в нее длину информации и ее смещение в файле;
4. в варианте б) для работы с файлом использовать функции пакета stdio.h; чтение и запись выполнять с помощью fread() и fwrite(), в которых должна быть указана реальная длина информации.