#c #data-structures #struct
Вопрос:
Как следует из названия, я пытаюсь сохранить структуру в C, но хочу найти наиболее эффективный способ сделать это. Ответ, безусловно, зависит от того, какие данные хранятся, верно?
Я знаю о связанных списках и двусвязных списках, но я работаю с Периодической таблицей, которая состоит из 118 элементов с 29 уникальными полями для каждого элемента, и я не знаю, нужны ли вообще связанные списки. В настоящее время я протестировал хранение нескольких элементов и 4 характеристик в структурном массиве. Есть вставки, поплавки и струны.
element[0] - atomicNumber: 1 element: Hydrogen symbol: H atomicMass: 1.0070
element[1] - atomicNumber: 2 element: Helium symbol: He atomicMass: 4.0020
element[2] - atomicNumber: 3 element: Lithium symbol: Li atomicMass: 6.9410
element[3] - atomicNumber: 4 element: Beryllium symbol: Be atomicMass: 9.0120
Итак, у кого-нибудь есть какое-нибудь представление, которое могло бы помочь мне?
Комментарии:
1. Проблемы, которые вы пытаетесь решить, имеют гораздо большее значение, чем тип данных, с которыми вы имеете дело. Тем не менее, это все еще, скорее всего, вопрос мнения.
2. «наиболее эффективно» для чего? Использование памяти? Сложность? Вставка? Удаление? Поиск? Вычисления часто сопряжены с компромиссами, поэтому при принятии проектных решений необходимо указывать точные требования.
3. Что вы собираетесь делать с данными? Вам интересно, нужны ли вообще связанные списки, но пока вы в лучшем положении, чтобы судить об этом, чем мы. С другой стороны, связанные списки в любом случае редко являются ответом.
4. Связанные списки могут быть полезны, если вы будете добавлять и удалять элементы из коллекции. Но если это коллекция фиксированного размера, обычно подходит массив.
5. Вы могли бы даже рассмотреть возможность использования небольшой базы данных, такой как SQLite .
Ответ №1:
Это зависит как от сохраняемых данных, так и от того, как вы хотите их использовать. Общий указатель: если вы точно знаете, сколько элементов будет, массив фиксированного размера обычно является хорошей идеей.
struct Element {
int atomicNr;
char symbol;
// etc
};
Element elements[] = {
{
.atomicNr = 1,
.symbol = 'H',
},
// etc
};
Возможно, вы даже сможете избавиться от atomicNr и просто использовать для этого индекс массива.
Комментарии:
1. Спасибо, Вутц. Именно этим я сейчас и занимаюсь. Если бы вы не могли сказать, что я немного новичок/новичок и не знал, какие вопросы даже задавать или как думать о создании чего-то полезного.