Return true;
}
Рассмотрим следующую простую задачу, иллюстрирующую технику работы с односвязным линейным списком. Проходя список:
- удалить все вхождения символа ‘Ы‘,
- заменить всюду '?' на '!'
- после каждого вхождения символа 'А' добавить символ 'Б'.
Поскольку предстоит выполнение удалений, в алгоритме будут использованы два рабочих указателе – на текущий элемент и на его предшественника. На начало списка указывает NODE *h. Первый узел списка не обрабатывается (см. далее "голова списка").
NODE *p1, *p2, *x;
for(p1=h,p2=p1->Next; p2!=NULL;p1=p1->Next,p2=p1->Next){
switch(p2->Letter){
case ‘Ы’:
p1->Next=p2->Next;
Delete p2;
Break;
case ‘?’:
p2->Letter=’!’
Break;
case ‘А’:
x=new NODE;
x->Letter=’Б’;
x->Next=p2->Next;
} // switch
} // for
Голова списка
Для того, чтобы избавиться от особенностей вставки и удаления в начале списка и для того, чтобы иметь возможность отличить пустой список от несуществующего, в начало списка можно поместить специальный узел, называемый головой списка. Таким образом, даже пустой список содержит хотя бы один узел – голову. В таком случае, все узлы списка, в тои числе и первый имеют предшественника и операции вставки и удаления в начале списка не имеют особенностей. В поле данных головы обычно помещают данные, которые не может иметь ни один рабочий узел списка.
Дата добавления: 2014-12-02; просмотров: 816;