Форум программистов, компьютерный форум CyberForum.ru

Создать модель файловой системы на основе связанных списков - C++

Восстановить пароль Регистрация
 
Рейтинг: Рейтинг темы: голосов - 14, средняя оценка - 4.79
LezhiK
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 3
24.10.2011, 22:58     Создать модель файловой системы на основе связанных списков #1
доброго времени суток, форумчане!!! В сентябре получил задание на курсовой проект по СПО:
"Файловая система использующая связанные списки для размещения файлов и связанный список для хранения информации о свободных блоках".

Вот особенности задания: Модель должна использовать некий файл в качестве виртуального жёсткого диска с виртуальной файловой структурой, аналогичной файловой структуре реального жёсткого диска. На этом виртуальном жёстком диске создаются "файлы" и "папки" в структуре файловой системы. Также должны быть реализованы основные операции реальной файловой системы.

Основные операции я реализовал:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#ifndef TEXT_H 
 #define TEXT_H
 
#include <iostream.h>
 #include <string.h>
 #include <alloc.h>
 #include <conio.h>
 #include <stdlib.h>
 
struct FDat {               //структура данных
 char Name[20];          //имя
 char r[4];              // расширение
 char d[10];             //       дата 
 int size;               // размер
 char attr[4];           //  атрибут
 FDat *Next;
 };
 
FDat *Add(FDat *, FDat *);
 FDat *Del(FDat *, int &);
 void Show (FDat *);
 void Find (FDat *);
 void FreeRam (FDat *);
 
#endif
Это хэдэр, а вот код:

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
#include "head.h"
 
FDat *Add(FDat *posl)
 {
 if (posl == NULL){
 posl = new FDat;
 }
 else { posl->Next = new FDat;
 posl = posl->Next;
 }
 
 cout << "Vvedite - Name, Racsherenie, Daty, Razmer and Attribut: \n";
 cin >> posl->Name >> posl->r >> posl->d >> posl->size >> posl->attr;
 posl->Next = NULL;
 return posl;
 }
 
FDat *Del(FDat *begin, int &identif )
 {
 FDat *prom, *begin_new, *next;
 int x = 0, j =  0, k = 0, y = 0;
 char name[20];
 
 cout << "Mi udalaem!!! \n";
 
 cout <<"Vvedite NAME : ";
 cin >> name;
 begin_new = prom = next = begin;
 while ( begin != NULL) {
 for (int i = 0; i<strlen(name); i++)
 if (name[i] == begin->Name[i]) j++;
 if (j == strlen(name)) {
 if (prom == begin) {
 begin_new = begin->Next;
 prom = begin->Next;
 delete begin;
 x = 1;
 y = 1;
 begin = prom;
 }
 else {
 while ( k == 0) {
 if (next->Next == begin){
 if (next->Next->Next == NULL) {
 k = 1;
 x = 1;
 delete begin;
 next->Next = NULL;
 begin = NULL;
 identif = 1;
 begin_new = next;
 }
 else {
 prom = begin->Next;
 delete begin;
 x = 1;
 k = 1;
 y = 1;
 next->Next = begin = prom;
 }
 }
 next = next->Next;
 }
 }
 }
 if (y == 1) begin = NULL;
 if (begin != NULL)  begin = begin->Next;
 j = 0;
 }
 if (x == 0)
 cout << "NAME nety ... ";
 getch();
 return begin_new;
 
}
 
void Show (FDat *begin)
 {
 cout << "Prosmotr spiska!!! \n";
 cout <<"Name, Racsherenie, Data, Razmer and Attribut\n";
 while ( begin != NULL) {
 cout <<"\n"<< begin->Name <<"."<<begin->r <<" "<<begin->d <<"  "
 << begin->size <<" byte"<<begin->attr <<" \n ";
 begin = begin->Next;
 }
 getch();
 
}
 
void Find (FDat *begin)
 {
 int x = 0, j =  0;
 char name[20];
 cout << "poisk!!! \n";
 cout <<"Vvedite NAME : ";
 cin >> name;
 while ( begin != NULL) {
 for (int i = 0; i<strlen(name); i++)
 if (name[i] == begin->Name[i]) j++;
 
                                 if (j == strlen(name)) {
 cout <<"\n"<< begin->Name <<"."<<begin->r <<" "<<begin->d <<"  "
 << begin->size <<" byte"<<begin->attr <<" \n ";
 x = 1;
 j = 0;
 }
 
 begin = begin->Next;
 }
 if (x == 0)
 cout << "NAME nety ... ";
 getch();
 }
 
void FreeRam (FDat *begin)
 {
 FDat *prom;
 cout << "ochistka!!! \n";
 prom = begin;
 while ( prom != NULL) {
 begin = begin->Next;
 delete prom;
 prom = begin;
 }
 }
 
////////////////////////////////////////////////////
 
int main ()
 {
 long int mem;
 FDat *Begin = NULL, *Posl = NULL, *Dopol;
 int ch, iden = 0;               //   наж. клавиша
 
                mem = farcoreleft(); //     Размер своб. памяти
 cout <<"Memory - "<<mem<<"\n";
 do {
 cout<<" <1> - DOBAVIT ZAPIS \n"
 <<" <2> - UDALIT ZAPIS \n"
 <<" <3> - PROSMOTR SPISKA \n"
 <<" <4> - POISK \n"
 <<" <5> - EXIT \n";
 
                  cin>>ch;       //  {реализация меню}
 
                  switch (ch) {
 case 1 :
 cout <<"adress = " <<Begin;
 cout <<"adress = " <<Posl;
 if (Begin == NULL) {
 Begin = Add(Posl);
 Posl = Begin;
 }
 else Posl = Add( Posl);
 cout <<"adress = " <<Begin;
 break;
 case 2 :
 Dopol = Del(Begin, iden);
 if (iden == 0) Begin = Dopol;
 else Posl = Dopol;
 break;
 case 3 :
 Show(Begin);
 break;
 case 4 :
 Find(Begin);
 break;
 }
 } while (ch != 5);
 
 cout <<"\n Memory - " <<farcoreleft()<<"\n";
 
 FreeRam(Begin);           //   очистка памяти
 getch();
 
 cout <<"\n Memory - " <<farcoreleft()<<"\n";
 if (mem == farcoreleft()) cout <<"Pamat' ne poterana ... ";
 else cout << "ERROR!!! Potera Memory!!!";
 
 cout<<" Press key..."<<endl;
 getch();
 
 return 0;
 }

если есть ошибки, то исправьте пожалуйста))
Как связать размещение файлов со списком, создать файл-виртуальный жесткий диск???
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.10.2011, 22:58     Создать модель файловой системы на основе связанных списков
Посмотрите здесь:

Релизация связанных списков C++
ИСПОЛЬЗОВАНИЕ ФАЙЛОВОЙ СИСТЕМЫ C++
Мониториг файловой системы C++
C++ создать модель функционирования системы, С++
Моделирование файловой системы C++
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
accept
4838 / 3237 / 165
Регистрация: 10.12.2008
Сообщений: 10,682
25.10.2011, 05:56     Создать модель файловой системы на основе связанных списков #2
Цитата Сообщение от LezhiK
если есть ошибки, то исправьте пожалуйста))
Цитата Сообщение от LezhiK
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
FDat *Add(FDat *posl)
 {
 if (posl == NULL){
 posl = new FDat;
 }
 else { posl->Next = new FDat;
 posl = posl->Next;
 }
 
 cout << "Vvedite - Name, Racsherenie, Daty, Razmer and Attribut: \n";
 cin >> posl->Name >> posl->r >> posl->d >> posl->size >> posl->attr;
 posl->Next = NULL;
 return posl;
 }
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
FDat *Add(FDat *posl)
{
    if (posl == NULL)
        posl = new FDat;
    else {
        posl->Next = new FDat;
        posl = posl->Next;
    }
 
    cout << "Vvedite - Name, Racsherenie, Daty, Razmer and Attribut: \n";
    cin >> posl->Name
        >> posl->r
        >> posl->d
        >> posl->size
        >> posl->attr;
    posl->Next = NULL;
 
    return posl;
}
оформляй код, от этого зависит читаемость
gogajeti
4 / 4 / 0
Регистрация: 19.10.2011
Сообщений: 20
25.10.2011, 10:35     Создать модель файловой системы на основе связанных списков #3
Цитата Сообщение от LezhiK Посмотреть сообщение
Как связать размещение файлов со списком, создать файл-виртуальный жесткий диск???
я не нашел у Вас разницы между файлом и папкой. предлагаю взять ручку и бумагу и "нарисовать" схему файловой системы - например чем различаются "файл" и "папка", как это хранить в виртуальной файловой системе, нужно ли реализовать вложенность "файлов" в "папки", добавить ли возможность записи данных в файл;
где в файловой системе хранить список свободных блоков, что для Вас "блок" вообще, и т.д.
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
26.10.2011, 22:45     Создать модель файловой системы на основе связанных списков #4
Ну, короче как бы сделал я. Раз надо сязный список, то представим виртуальный диск VD и допустим в нём папка X а в ней несколько папок papka_1 papka_2 papka_3 и два файла fail_1 fail_2

Тогда содержание папки VD\X и есть тот самый двусвязный список
papka_1-> papka_2-> papka_3-> fail_1-> fail_2

Сделать его легко и добавлять туда элементы очень легко. Сам бы я список не стал реализовывать, а взял готовый шаблон из библиотеки STL. Там по-моему несколько функций надо пустяковых написать (чуть ли не одну-две). Функцию сравнения. Это так: каждый элемент это элемент типа FDat. Но, как правильно было замечено, тут нет индикатора того, папка это или файл. Поэтому введём туда новое поле
C++
1
2
3
4
5
6
7
8
9
struct FDat {               //структура данных
 char Name[20];          //имя
 char r[4];              // расширение
 char d[10];             //       дата 
 int size;               // размер
 bool papka_ili_fail;    //новое поле
 char attr[4];           //  атрибут
 FDat *Next;
 };
И условимся что true это папка, false это файл. ПИшешь функцию сравнения, сравниваешь
по полю papka_ili_fail
Всё, создаёшь новый элемент и спокойно вставляешь в список и он вставляется.
Обрати внимание, впереди будут папки, позади файлы. Но папки вперемежку друг
с другом и файлы тоже. Если хочешь упорядочит их по алфавиту, надо будет сортировать
не только по полю papka_ili_fail, но и по имени. Но это детали.

С содержанием отдельно взятой папки мы разобрались.
Но каждая папка как бы содержит в себе другие файлы и папки. То есть надо в переменной
FDat создать указатель на "внутренее содержание". Причём, если это папка, то пусть
он куда-то реально указывает, а если файл- то никуда (файл не может в себе содержать
другие файлы)
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
struct FDat {               //структура данных
 char Name[20];          //имя
 char r[4];              // расширение
 char d[10];             //       дата 
 int size;               // размер
 bool papka_ili_fail;
 char attr[4];           //  атрибут
 
 //Вот этот новый указатель. 
 FDat *ukazatel
 
 FDat *Next;
 };
ТОгда если в папке papka_2 есть papka_0 и fail_34, то получаем такой список:
papka_2-> papka_0-> fail_34

Причём обрати внимание
papka_0 и fail_34 лежат в папке papka_2

Ну вот так примерно. Ещё: поскольку бывают пустые папки, то тогда тоже надо подумать,
куда пусть указывают их указатели. Но это детали реализации уже.

И ещё: каждый файл в этом виртуальном диске будет иметь какое-то настоящее имя
C:\бля-бля-бля\рабочий стол\проект\виртуальный_диск И ВСЁ В ТАКОМ ДуХЕ
Вот наверное надо в структуре FDat предусмотреть string, содержащий РЕАЛЬНОЕ ИМЯ ФАЙЛА

Задание интересное, сам бы взялся, да некогда. Блин, если это такие курсовые, это вселяет
в меня слабую наждежду на меня.


Добавлено через 16 часов 39 минут
Теперь: решил поправить твой код, но по-моему там много ошибок. НАчасть с первой. Итак, пошли на добавление записи:
C++
1
2
3
4
   if (Begin == NULL) {
    Begin = Add(Posl);
    Posl = Begin;
   }
это понятно, то есть если нет ни одного файла или папки, делаем то-то и то-то.
Как я тебя убедил, надеюсь, виртуальный диск это всего-навсего файл с кучей таких вот переменных типа FDat. Вот мы насоздавали таких переменых в этом файли и вышли. Из программы

А потом снова решили чё-то добавить в этот виртуальный диск. Запускаем программу и получается херь. С одной стороны, нам надо задействоват файл-вртуальный диск, дабы кудато пихать новую запись, с другой- Begin снова равна 0, то есть вроде как диск пуст.

Нет так не пойдёт. Позаботься о создании файла "виртуальный диск", чтобы каждый раз прога считывала оттуда даные и решала, пуст диск или нет, ориентируясь на этотфайл, а не на Begin, которая будет всякий раз при входе в прогу, показывать, что диск пуст.

Добавлено через 2 часа 36 минут
Теперь такое соображение
Представим себе работу с виртуальным диском.
В оперативной памяти у нас есть куча переменых типа FDat, разбросанных по памяти и незримо связанных меж собой. Как мы договорились, всё это благолепие благополучно сохраняется в файле VD при закрытии программы.

Чем связаны меж собой эти переменные находясь в оперативной памяти? Адресами. То есть по этим связям мы их находим. И эти адреса сохраняются в файле VD. По новому запуску программы вся эта херь снова проецируется в память и всё круто, адреса сохранены, связи восстановлены.
Круто, да не совсем. Ибо, хе-хе, кмпилятор поместит всю эту херь туда, куда поместит, совсем ПО ДРУГИМ АДРЕСАМ, нежели сохранённые. И все наши связи насмарку. Допустим, адрес который в какой-нибудь папке X находится, указывает на другую папку Y. И он равен cafebabe. А в следующий раз ось помещает папку Y (не папку, конечно, но соответствующую ей запись по адресу babecafe).
Чё делать?
Я вижу два пути
1) Каждая переменная пусть имеет плюсом два дополнительных поля- свой уникальный идентификатор и уникальный идентификатор то переменной, на которую она указывает.
Тупо пронумеровать их и получится, что переменная 1 указывает на переменную 4, та указывает напеременную 6, та указывает на переменную 8. Эти номера сохраняются в файле VD, а при новом запуске программы все адеса восстанавливаются по этим вот данным и по одному единственному адресу который нам действительно необходимо знать: по адресу начала каталога.
...Кстати, каждый файл и так будет иметь уникальный дентификатор- собственное реальное имя на диске С. Этим можно воспользоваться, но тогда каждая переменная будет слишком большой- вместо номера своей "соседки" на этом месте будет её реально имя. Так, если папка 2 указывает на папку с номеро 6, то вместо номера 6 будет имя. Это не наш метод

2) второй способ основан на том, что данный из файла VD можно проецровать в непрерывную область памяти.
Допустим, мы работаем с нашим диском и переменные находятся по адресам 10, 14, 18, 22 и так далее (через 4 байт, или через сколько там, важно, что через равное количество байтов)
Запоминаем адрес родительского каталога 10
закрываем-окрываем программу

Видим, что корневой каталог лежит по адресу 23! Как мы найдё адреса осальных? Правильно, 25, 26 и 28. Распихиваем эти данные по нужным полям и можно работать с диском.

Чем мне не нравится такой способ- при добавлении записи её придётся добавлять в конец массива переменных типа DFat. И всё бы ничего, но если там не окажется места? А тогда придётся работать с alloc функциями. Можно, но мне этот способ не нравится.

Добавлено через 1 минуту
Ой, вру 27, 31 и 35
LezhiK
0 / 0 / 0
Регистрация: 14.04.2011
Сообщений: 3
03.11.2011, 03:19  [ТС]     Создать модель файловой системы на основе связанных списков #5
Мне преподаватель сказал, что виртуальная файловая система должна представлять собой бинарный файл размером 20 мб. Так это что, если он будет использоваться как жесткий диск, то все операции сохранения и считывания данных сводятся к операциями над текстовым файлом? Тогда, например, как будет храниться структура? Я решил, что размером одного блока будет размер структуры с описанием файла и тогда я буду определять размер файла в блоках, ну а потом и в байтах. Вопрос в том, как это всё туда правильно записать, ну и потом считывать и манипулировать этим? Насколько я понимаю, функция malloc не выделяет память из файла, а значит, чтобы задать файлу размер нужно определённый участок бинарного файла заполнить какими-то символами. Должен сказать, что в меня это вселило слабую надежду на полноценное выполнение курсового проекта, так что, коллеги, если у кого есть идеи по поводу реализации вышеизложенного мной, просьба приподнести в коде. Благодарю за поддержку
Jupiter
Каратель
Эксперт C++
6543 / 3963 / 226
Регистрация: 26.03.2010
Сообщений: 9,273
Записей в блоге: 1
Завершенные тесты: 2
03.11.2011, 04:07     Создать модель файловой системы на основе связанных списков #6
Цитата Сообщение от LezhiK Посмотреть сообщение
то все операции сохранения и считывания данных сводятся к операциями над текстовым файлом? Тогда, например, как будет храниться структура? Я решил, что размером одного блока будет размер структуры с описанием файла и тогда я буду определять размер файла в блоках, ну а потом и в байтах. Вопрос в том, как это всё туда правильно записать, ну и потом считывать и манипулировать этим?
бинарные файлы вам в помощь
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
03.11.2011, 06:49     Создать модель файловой системы на основе связанных списков #7
Цитата Сообщение от LezhiK Посмотреть сообщение
Мне преподаватель сказал, что виртуальная файловая система должна представлять собой бинарный файл размером 20 мб. Так это что, если он будет использоваться как жесткий диск, то все операции сохранения и считывания данных сводятся к операциями над текстовым файлом? Тогда, например, как будет храниться структура? Я решил, что размером одного блока будет размер структуры с описанием файла и тогда я буду определять размер файла в блоках, ну а потом и в байтах. Вопрос в том, как это всё туда правильно записать, ну и потом считывать и манипулировать этим? Насколько я понимаю, функция malloc не выделяет память из файла, а значит, чтобы задать файлу размер нужно определённый участок бинарного файла заполнить какими-то символами. Должен сказать, что в меня это вселило слабую надежду на полноценное выполнение курсового проекта, так что, коллеги, если у кого есть идеи по поводу реализации вышеизложенного мной, просьба приподнести в коде. Благодарю за поддержку
Во-первых, следует осконально подробно излагать требования препода СРАЗУ
Во-вторых, начинать надо с азов.
В-третьих, ничё сверхъестественного, я уже пишу такую файловую систему, реализовал две операции:

1) создание файловой системы. Это делавется так: (в моём случае): допустим, файловая система имеет имя vF. Тогда создаётся папка vF, в ней файл vF, а в него записывается данные об этой файловой системе? а именно такие данные: В каждой файловой системе существует сначала только одна папка. Вот создаётся структура (как у тебя), соответствующая этой одной папке и записывается в этот файл
Всё, файловая система создана.

2) создание папки
Но поскольку я не знаю требований, пишу на свой страх и риск, списки реализовал с помощью STL


Вопрос в том, как это всё туда правильно записать, ну и потом считывать и манипулировать этим?
Не знаю чё и сказать. Попробуй тупо создать структуру абы какую, по фиг какую с несклькими полями, разных типов потом массив структур, инициализируй его и перегони в файл и из файла.

Так это что, если он будет использоваться как жесткий диск, то все операции сохранения и считывания данных сводятся к операциями над текстовым файлом?
Нет, считывание и запись будет происходить непосредственно в файлы виртуальной файовой системы.
А этот диск типа оглавления. Если ты добавил файл- туда занесутся даные. Если ты удалил файл- оттуда удалятся данные. Это основное
Если ты изменишь атрибуты файла- то это отразится в этотм файле-оглавлении, но это уже по желанию.

Короче в этом файле данные О ФАЙЛАХ. Пыталя объяснить понятно.
Jupiter
03.11.2011, 08:31
  #8

Не по теме:

Цитата Сообщение от kravam Посмотреть сообщение
Короче в этом файле данные О ФАЙЛАХ. Пыталя объяснить понятно.
файл который содержит данные о других файлах называют метафайлом

gogajeti
4 / 4 / 0
Регистрация: 19.10.2011
Сообщений: 20
03.11.2011, 09:37     Создать модель файловой системы на основе связанных списков #9
поддерживаю идею разбиения исходного файла вфс(виртуальной файловой системы) на блоки. и вроде как в Вашем задании не было ничего об интеграции Вашей вфс с операционкой, в которой это будет запускаться.

итак, разбиваем файл вфс на блоки равного размера. каждый файл внутри вфс - это один и более блоков, которые связаны мужду собой полем в структуре одного блока = смещению в вфс от начала файла/от первого блока/от предыдущего блока. структура одного блока определяется полями типа имя файла, предок(id папки в которой он лежит), свой id, флаги(в том числе файл это или папка)..., и int полем определяющем где лежит следующий блок(если есть), ну и данные (например в виде char * ).

папка в вфс - это файл, содержимым которого является список id файлов которые лежат в этой папке;
список пустых блоков - это файл, содержимым которого является список например номеров свободных блоков в вфс;
и первые два блока пусть будут жестко оптеделены под корневой каталог в вфс и под файл списка пустых блоков.

надеюсь, понятно описал идеологию... рассматривайте как вариант возможной структуры вфс...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.11.2011, 15:10     Создать модель файловой системы на основе связанных списков
Еще ссылки по теме:

C++ Линейные списки. Создание списков на основе имеющегося
Имитация иерархической файловой системы на основе дерева C++
C++ Объединение двух связанных списков (нужен совет)

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
kravam
быдлокодер
 Аватар для kravam
1512 / 872 / 44
Регистрация: 04.06.2008
Сообщений: 5,271
03.11.2011, 15:10     Создать модель файловой системы на основе связанных списков #10
Мой вариант:


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
//Тут всё просто, каждая переменная такого типа соответствует одному файлу
// (НЕ ПАПКЕ)
struct FDat {               
 string ima_bez_puta;
 string data_sozdania;                
 string data_izmemenia;
 string ima_na_diske_C;
 int size;               
 int attr;           
};
 
 
//каждая такая переменная соответствует одной папке
//обращаю внимание, что здесь, в отличие от структуры FDat
//нет переменной, которая соответстовала бы "имя папки на диске C"
//ибо никакой папки на диске C нет и быть не может
//папка- это всего лишь переменная такого типа, которую перегнали в файл-оглавление и ничего больше.  
struct soderzhanie_papki {
 int kol_vo_failov_v_papke;
 string ima_papki_s_putom;
 string data_sozdania;
 string data_izmemenia;
 bool attr;           
 
//Обращаю внимание на этот список переменных- это просто список файлов, который лежат
//в этой папке
list <FDat> list_;
};
 
 
//А это список папок. Перегоняем его в файли получаем метафайл. Главный и единственный.
list <soderzhanie_papki> main_list;
Добавлено через 47 секунд
реализовал: создание вфс, создание папки
Yandex
Объявления
03.11.2011, 15:10     Создать модель файловой системы на основе связанных списков
Ответ Создать тему
Опции темы

Текущее время: 21:06. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru