Сортировка списка
-
- Сообщения: 509
- Зарегистрирован: 03 янв 2009, 23:17
- Откуда: Voronezh
- Контактная информация:
С клавиатуры вводятся слова и помещаются в D-список (info:string). Построить ещё один список, который содержит элементы исходного списка, расположенные по возрастанию.Вид списка может быть любой. Я делал на основе очереди. На второй части зациклился. Есть у кого какие идеи?
Нет религии выше истины
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ранее я уже показал, как производится вставка элемента на определенное место. Теперь создать новый список. А затем последовательно брать элементы из исходного и добавлять в новый, но предварительно вычислять местоположение.
Берем очередной элемент и его строку S.
Просматриваем новый список сначала, и бежим по нему до тех пор пока S < строки следующего элемента. После текущего элемента и надо произвести вставку.
Особое условия - это когда следующего элемента нет (добавление в конец) и когда S < строки первого элемента (добавление в начало)
Берем очередной элемент и его строку S.
Просматриваем новый список сначала, и бежим по нему до тех пор пока S < строки следующего элемента. После текущего элемента и надо произвести вставку.
Особое условия - это когда следующего элемента нет (добавление в конец) и когда S < строки первого элемента (добавление в начало)
-
- Сообщения: 509
- Зарегистрирован: 03 янв 2009, 23:17
- Откуда: Voronezh
- Контактная информация:
Посмотрите, пожалуйста, эту процедуру.
Код: Выделить всё
procedure Sort_Spisok;
begin
D1:=head;
D1^.info:=D^.info;
repeat
while D<>nil do begin
if (D^.info > D1^.info) then D1^.info:=D^.info;
D:=D^.next;
end;
D1:=D1^.next;
until D1=nil;
end;
Нет религии выше истины
- Naeel Maqsudov
- Сообщения: 2551
- Зарегистрирован: 20 фев 2004, 19:17
- Откуда: Moscow, Russia
- Контактная информация:
Ну что ее смотреть? Опять глобальные переменные....
Для начала посмотрите, все ли там точно осталось после моей правки?
(Вы тэг закрыли неправильно.)
Для начала посмотрите, все ли там точно осталось после моей правки?
(Вы тэг закрыли неправильно.)
-
- Сообщения: 509
- Зарегистрирован: 03 янв 2009, 23:17
- Откуда: Voronezh
- Контактная информация:
Вот немного подправил.
Код: Выделить всё
procedure Sort_Spisok(list:pitem);
var D1:pitem;
begin
D1:=head;
D1^.info:=list^.info;
repeat
while listnil do
begin
if (list^.info > D1^.info) then
D1^.info:=list^.info;
list:=list^.next;
end;
D1:=D1^.next;
until D1=nil;
end;
Нет религии выше истины
- Игорь Акопян
- Сообщения: 1419
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
dr.Jekill, отредатировал ваш пост
убрал тэг, сформировал нужную структуру (вы же не думали что этот тэг сам отступы сформирует? - он только выводит код моноширинным шрифтом и не даёт движку начальные пробелы в строке резать)
далее выделил код и нажал кнопку - появился тэг с двух сторон выделения - пост сообщения - всё нормально
убрал тэг, сформировал нужную структуру (вы же не думали что этот тэг сам отступы сформирует? - он только выводит код моноширинным шрифтом и не даёт движку начальные пробелы в строке резать)
далее выделил код и нажал кнопку - появился тэг с двух сторон выделения - пост сообщения - всё нормально
- Игорь Акопян
- Сообщения: 1419
- Зарегистрирован: 13 окт 2004, 17:11
- Откуда: СПБ
- Контактная информация:
ещё можно так:
[syntax=pascal]
procedure Sort_Spisok(list item);
var D1 item;
begin
D1:=head;
D1^.info:=list^.info;
repeat
while listnil do
begin
if (list^.info > D1^.info) then
D1^.info:=list^.info;
list:=list^.next;
end;
D1:=D1^.next;
until D1=nil;
end;
[/syntax]
для этого нужно вручную написать тэг [noparse][syntax=pascal] ваш код [/syntax] [/noparse]
[syntax=pascal]
procedure Sort_Spisok(list item);
var D1 item;
begin
D1:=head;
D1^.info:=list^.info;
repeat
while listnil do
begin
if (list^.info > D1^.info) then
D1^.info:=list^.info;
list:=list^.next;
end;
D1:=D1^.next;
until D1=nil;
end;
[/syntax]
для этого нужно вручную написать тэг [noparse][syntax=pascal] ваш код [/syntax] [/noparse]