Создание сортированного списка
Первое число: 5
Следующее число: 3
Следующее число: 12
Следующее число: 7
Следующее число: 0
Введено чисел: 4
Список:
3 5 7 12
Программа:
Program Sort_spisok;
Uses CRT;
Type TPoint = ^TElement;
TElement = Record
Inf: Integer;
Next: TPoint;
End;
Var head, q, r, v : TPoint;
Procedure Formir_sort_spisok;
Begin
New(head); head -указатель на голову списка
head^.Inf := 0;количество элементов в списке
head^.Next := Nil; списка еще нет
New(v); формируем первый элемент
Write(‘Первое число: ’);
ReadLn(v^.Inf);вводим его информационную часть
If (v^.Inf=0)если ввели 0,
Then Exit; то выходим из процедуры
head^.Inf := 1;в списке один элемент
v^.Next := head^.Next;вставляем его в голову списка
head^.Next := v; в head^.Next адрес первого элемента списка
New(r); r - поисковая ссылка
Repeat
New(v);формируем очередной элемент
Write(‘Очередное число: ’);
ReadLn(v^.Inf);вводим его информационную часть
If (v^.Inf=0) если ввели 0,
Then Break;то выходим из цикла ввода
head^.Inf := head^.Inf + 1;увеличиваем счетчик элементов на 1
r := head^.Next; поисковик r - на первый элементсписка
q := head; q – отстает на шаг
While (r <> Nil) Do пока не дошли до конца списка
If (r^.Inf <= v^.Inf) Then если текущий еще меньше
Begin вставляемого,
q := r; то подтягиваем q к r
r := r^.Next; и делаем шаг по списку
End
Else Break;иначе выходим из цикла поиска-место найдено
v^.Next := q^.Next; ставим новый элемент на место
q^.Next := v;
Until (v^.Inf = 0);
End;
Procedure Vyvod_spisok; процедура вывода списка
Begin
q := head^.Next;текущую ссылку – на первый элемент
While (q <> Nil) Doпока не конец списка
Begin
Write(q^.Inf:5); выводим очередной элемент
q := q^.Next; ссылку – на следующий элемент
End;
Дата добавления: 2015-08-08; просмотров: 510;