z-ram 0 16 января, 2017 Опубликовано 16 января, 2017 (изменено) · Жалоба Всем привет. Есть такая задача хранить в еепром записи. Выглядит это примерно так [record1] [data1][data2][data3][data4][data5] [record2] [data1] [record3] [data1][data2][data3][data4] Они все разной длины, и мне нужно иметь возможность искать, удалять, редактировать эти записи. Если для поиска Можно сделать отдельную табличку с номерм записи и ее адресом в памяти и поиск производит просто по таблице, то вот добавить поля к записи уже сложнее, а с удалением тоже трудности если просто их удалять, то память быстро станет фрагментированой. Может есть какие-нибудь способы нечто вроде двоичного дерева поиска или еще чего? Пишу на си под АВР Изменено 16 января, 2017 пользователем z-ram Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
slavka012 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба В чем проблема-то... при удалении все сгребаете в начало, чтобы данные всегда были непрерывным куском. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Сергей Борщ 119 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба В чем проблема-то...В быстром исчерпании ресурса начала eeprom? В скорости процесса сдвигания (если память большая, а двигаем почти все ее содержимое)? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
SlavaV 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба можно предложить однонаправленный или двунаправленный связанный список (смотря в каких направлениях нужно проходить) и два вспомогательных связанных списка для хранения свободных ячеек и занятых Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
DogPawlowa 0 16 января, 2017 Опубликовано 16 января, 2017 · Жалоба Надуманная постановка задачи. Нужно привести все записи к более удобоваримому виду, и затолкать их в один или несколько циклических буферов. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
z-ram 0 17 января, 2017 Опубликовано 17 января, 2017 · Жалоба Надуманная постановка задачи. Нужно привести все записи к более удобоваримому виду, и затолкать их в один или несколько циклических буферов. А как узнать лего и быстро найти нужную запись по адресу? Попутно составить список адресов и номеров записей в памяти? Вот сделал я циклический буфер натолкал туда 1000 записей, затем мне нужно найти 50 разных записей в разных местах буфера, затем удалить их или отредактировать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RabidRabbit 0 17 января, 2017 Опубликовано 17 января, 2017 · Жалоба FatFS от Чена? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
jorikdima 0 17 января, 2017 Опубликовано 17 января, 2017 · Жалоба FatFS от Чена? eeprom обычно маленькие вроде. одна только фат таблица дофига займет. ну и ресурс, да. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
becopt 0 18 января, 2017 Опубликовано 18 января, 2017 · Жалоба Я бы предложил вам что-то вроде по аналогии с реализацией хэш-таблиц. Формат записи: номер, длина, данные, чексум, флаг стертости. Вся память делится на несколько связанных списков размером минимум в три страницы памяти. Из номера записи по хэш-функции (упрощенной какой-нибудь) вычисляется индекс соответсвующего связанного списка и в него добавляется/читается/удаляется (отмечается флаг) запись. При переходе в связанном списке через ноль, он переформатируется и удаляются старые записи. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться