Другие языки программирования и технологии

Работа с динамическими списками в Делфи!

Помогите пожалуйста с задачкой!!! Нужно подсчитать в списке число соседств чисел одного знака.Используются односвязные списки, информационная часть которых - целое число. Для создания списка и вывода его на форму написать отдельные процедуры.
EA
Elmurot Askarov
101
Доброго времени суток

Здесь действительно нет ничего сложного. Вот небольшой примерчик. Сначала объявляются типы.

TData = Integer; {это будет элемент данных списка}

PList = ^TList;
TList = record
Data : TData;
Next : PList; {указатель на следующий элемент списка}
end;

далее для работы объявляется несколько переменных

var
Fst, Cur, Last : PList;

В принципе, все готово и можно приступать к работе. Дальше нужно заполнить этот список. Допустим, это будут некоторые последовательные целые числа

for i:=20 to 55 do begin
if Fst = Nil then begin
New(Cur);
Fst := Cur;
end
else begin
New(Cur^.Next);
Cur := Cur^.Next;
end;
Cur^.Data := i;
Cur^.Next := Nil;
end;

Процедуру из этого кода попробуйте сделать сами.

Вывести список на экран можно так

procedure ShowList(Fst: PList);
var
L : PList;
begin
L := Fst;
while L <> Nil do begin
Write(L^.Data:4); {выводим список в строку}
L := L^.Next;
end;
WriteLn;
end;

После небольшой доработки эту же процедуру можно использовать для подсчета чисел, ведь главное, что она делает, это осуществляет последовательный просмотр списка. Поскольку вы работаете в Delphi, то придется только изменить в выводе строчку с Write.

А это примерчик сортировки списка

Last := Nil;
while Fst <> Last do begin
Cur := Fst;
while Cur^.Next <> Last do begin
if Cur^.Data > Cur^.Next^.Data then begin
T := Cur^.Data;
Cur^.Data := Cur^.Next^.Data;
Cur^.Next^.Data := T;
end;
Cur := Cur^.Next;
end;
Last := Cur;
end;

Удачи!
Карпенко Виктор
Карпенко Виктор
59 612
Лучший ответ
Ну а что сложного? Вперёд в интернет. Смотри как реализовать списки можно (подскажу - через указатели) . И юзай. Всё просто.
В Дельфи есть уже готовый класс TList, зачем изобретать велосипед-то? Всего-то примеры посмотреть и хелп почитать :)