История изменений
Исправление firkax, (текущая версия) :
Суть в том, что
я решил убить пару часов времени и написать тот злосчастный двусвязный список на C
двусвязный список сам по себе - вещь бесполезная, не надо его писать просто так. Полезная вещь - интеграция двусвязного списка в какое-то описание объекта. Вот есть у тебя структура с описанием, например, файла в директории:
struct filedesc {
char const * name;
uchar type;
off_t size;
ushort mode;
uint owner, group;
};
А теперь ты хочешь сделать список файлов. В каком-нить скриптовом языке это делалось бы обёртыванием готовой реализации описания файла в реализацию списка. Тут - нет. Добавляем два поля в имеющуюся структуру:
struct filedesc {
struct filedesc *next, *prev;
char const * name;
uchar type;
off_t size;
ushort mode;
uint owner, group;
};
struct filelist {
struct filedesc *first, *last;
};
Реализуем ещё около 20 строк кода: функция добавления файла в список, удаления файла из списка, поиска файла по имени в списке. Всё, теперь у нас есть двусвязный список описаний файлов. Разумеется, не за 2 часа, а за 10 минут.
Исправление firkax, :
Суть в том, что
я решил убить пару часов времени и написать тот злосчастный двусвязный список на C
двусвязный список сам по себе - вещь бесполезная, не надо его писать просто так. Полезная вещь - интеграция двусвязного списка в какое-то описание объекта. Вот есть у тебя структура с описанием, например, файла в директории:
struct filedesc {
char const * name;
uchar type;
off_t size;
ushort mode;
uint owner, group;
};```
А теперь ты хочешь сделать список файлов. В каком-нить скриптовом языке это делалось бы обёртыванием готовой реализации описания файла в реализацию списка. Тут - нет. Добавляем два поля в имеющуюся структуру:
struct filedesc { struct filedesc *next, *prev; char const * name; uchar type; off_t size; ushort mode; uint owner, group; };
struct filelist { struct filedesc *first, *last; };
Реализуем ещё около 20 строк кода: функция добавления файла в список, удаления файла из списка, поиска файла по имени в списке. Всё, теперь у нас есть двусвязный список описаний файлов. Разумеется, не за 2 часа, а за 10 минут.
Исходная версия firkax, :
Суть в том, что
я решил убить пару часов времени и написать тот злосчастный двусвязный список на C
двусвязный список сам по себе - вещь бесполезная, не надо его писать просто так. Полезная вещь - интеграция двусвязного списка в какое-то описание объекта. Вот есть у тебя структура с описанием, например, файла в директории:
char const * name;
uchar type;
off_t size;
ushort mode;
uint owner, group;
};```
А теперь ты хочешь сделать список файлов. В каком-нить скриптовом языке это делалось бы обёртыванием готовой реализации описания файла в реализацию списка. Тут - нет. Добавляем два поля в имеющуюся структуру:
```struct filedesc {
struct filedesc *next, *prev;
char const * name;
uchar type;
off_t size;
ushort mode;
uint owner, group;
};
struct filelist {
struct filedesc *first, *last;
};
Реализуем ещё около 20 строк кода: функция добавления файла в список, удаления файла из списка, поиска файла по имени в списке. Всё, теперь у нас есть двусвязный список описаний файлов. Разумеется, не за 2 часа, а за 10 минут.