Глава 1 (продолжение 4)
Вверх
Для того, чтобы программа могла работать с классом LinkedList мы должны подключить библиотеку, в которой содержится данный класс. Подключаем следующей инструкцией:
import java.util.*;
Далее, заменим в нашей программе фиксированный массив связным списком.
//Объявим связный список LinkedList
Для добавления элементов в связный список воспользуемся функцией add()
класса LinkedList.
int count=0;
if (! search(Word_List,word)) {
Функцию report() вывода данных в файл следует так же переписать,
void
report
(LinkedList Word_List, Stream fout) {
Функция search() так же должна измениться:
boolean
search
(LinkedList Word_List, String x) {
Поскольку мы пока не поместили эти модифицированные функции в библиотеку,
то их вызов в основной программе будет обычным:
String word = fin.readString();
if (! search(Word_List,word)) {
report(Word_List,fout);
К сожалению мы пока не имеем алгоритма сортировки строк с использованием связного списка.
Поэтому придется оставить старую функцию сортировки, которая использует фиксированный размер обычного массива.
Но и здесь мы можем извлечь выгоду из применения связного списка. Она заключается в том, чтобы не указывать заранее фиксированную длину массива, а инициализировать его в процессе выполнения программы. Этому служит следующий код:
int len = Word_List.size();
int num = 0;
Как видим мы воспользовались функцией size() класса LinkedList для инициализации
целочисленной переменной len, а затем используя эту переменную объявляем массив в динамической памяти и этот массив будет иметь нужную нам длину.
int len = Word_List.size();
Благодаря функции size() мы определяем число элементов связного списка уже после того, как связный список сформирован и инициирован данными. Этот примем помогает нам создать и инициировать данными в цикле обычный массив group, который будет передан в качестве аргумента в функцию сортировки selectionSort(). Вторым аргументом будет длина массива.
selectionSort(group,num);
Далее в программе будет вызвана прежняя (не модифицированная) библиотечная функция report() с тремя параметрами, которая выведет результат в файл, переданный через третий параметр.
rep.report(group,num,fout);
Код программы в файле Prog05
Назад |
Начало урока |
Вверх |
Вперед
1.5 Использование связного списка
Одним из недостатков нашей программы является то, что для временного хранения
считанных из файла слов мы используем обычный массив фиксированного размера.
Но в java для этой цели лучше подойдут специально разработанные классы.
Одним из таких классов является связный список LinkedList.
LinkedList Word_List = new LinkedList();
try {
count++;
с использованием связного списка.
for (ListIterator list = Word_List.listIterator(); list.hasNext(); ) {
fout.print(str);
fout.print(" ");
k++;
if(k==7){
k=0;
return false;
...
String group [] = new String[len];
for (ListIterator list = Word_List.listIterator(); list.hasNext();){
group[num] = str;
num++;
selectionSort(group,num);
String group [] = new String[len];
Содержание