17.06.2011, 23:04. Просмотров 825. Ответов 0
Задание: Составить программу, формирующую "перекрестные списки" т. е. печатающую список слов, которые встречаются в анализируемом файле, а для каждого слова - список номеров строк, в которых это слово встречается. При решении задачи рекомендуется использовать следующие структуры данных:
struct LIST // список номеров строк для данного слова
{int num; struct LIST*p;}
struct NODE // узел дерева с информацией об очередном слове
{char *word; int k; struct NODE*left; struct NODE*right;}
Мой примерный план решения:
1.Запускается цикл по i просмотра файла по строкам
{
считываем строку(какую можно использовать функцию для считывания всей строки?)
если i == 1 берем первое слово и формируем корень дерева
Запускается цикл помещения слов строки в дерево (пока слово не будет равно NULL)
{
если слово больше чем узел дерева - идем вправо
если меньше - влево
если слова одинаковые, то добавляем структуру с
указанием номера строки (i) к этому узлу дерева
если слово равно eof , то завершение работы программы
}
}
// выделять слова из строки думаю при помощи функции strtok
В верном ли я иду направлении? Как лучше реализовать чтение слов из файла (циклы просмотра файла по строкам и просмотра строки по словам) если можно - опишите это поподробнее?
0
|