|
|||
Алгоритм процедуры DeleteList. Алгоритм процедуры MoveElem. Алгоритм процедуры SortListАлгоритм процедуры DeleteList ( var root: PList)
Заданы: указатель на начало списка.
1. Если root ≠ nil, то к п. 2, иначе к п.; пока не пройден весь список 2. DelElem=root; удаляемый элемент – первый 3. root: =root^. Next; переходим к следующему элементу списка 4. Dispose(DelElem); удаляем очередной элемент списка 5. Переход к п. 1 6. Конец. Алгоритм процедуры MoveElem ( var root: PList)
Заданы: указатель на позицию, перед той, откуда надо перемещать элемент и указатель на позицию, перед той, куда надо перемещать. 1. buf=FromP^. next; буферная переменная указывает на перемещаемый элемент 2. FromP^. next=buf^. next; связываем предыдущий и следующий элементы 3. buf^. next: =Top^. next; перемещаемый элемент ссылается на следующий, после того, куда перемещаем 4. Top^. next: =buf; тот элемент, куда перемещаем ссылается на тот, который перемещаем 5. Top: =buf; элементы располагаются в обычном порядке 6. Конец.
Алгоритм процедуры SortList (varroot: PList; var k: integer) Заданы: указатель на начало списка и число элементов. 1. EndSub: =root; указатели на конец отрицательных чисел, на конец 2. NowP: =root; нулей и на текущее положение устанавливаем на 3. EndZero: =root; начало списка 4. Если список не пройден до конца (k> 0), то к п. 5, иначе к п. 16 5. Если NowP^. next^. value< 0, то; если элемент – отрицательный 6. MoveEl(NowP, EndSub); вызов процедуры перемещения элемента 7. k=k-1; элемент пройден 8. Если NowP^. next^. value=0, то; если элемент равен 0 9. Если k> 1, то 10. MoveEl(NowP, EndZero); вызов процедуры перемещения элемента 11. k=k-1; элемент пройден 12. Если NowP^. next^. value> 0, то; если элемент – положительный 13. NowP=NowP^. next; переход к следующему элементу списка 14. k=k-1; элемент пройден 15. Переход к п. 4 16. Конец.
|
|||
|