Другие языки программирования и технологии
На паскале Упорядочить список по другому способу – в порядке возрастания длины фамилии (количества символов в фамилии).
На паскале, упорядочить список по другому способу – в порядке возрастания длины фамилии (количества символов в фамилии). в уже имеющимся коде.
ок, сделал.. посмотрел и удалил
type
//Тип основных данных.
TData = Integer;
//Тип указателя на элемент списка.
TPElem = ^TElem;
//Тип элемента списка.
TElem = record
Data : TData; //Основные данные.
PNext : TPElem; //Указатель на следующий элемент списка.
end;
//Тип, описывающий однонаправленный список.
TList = record
PFirst, PLast : TPElem; //Указатели на первый и на последний элементы списка.
end;
//Начальная инициализация списка. Внимание! Эту процедуру можно выполнять
//только в отношении пустого списка! Иначе - будут утечки памяти.
procedure Init(var aList : TList);
begin
aList.PFirst := nil;
aList.PLast := nil;
end;
//Добавление элемента в конец однонаправленного списка.
procedure Add(var aList : TList; const aData : TData);
var
PElem : TPElem;
begin
New(PElem);
PElem^.Data := aData;
PElem^.PNext := nil;
if aList.PFirst = nil then
aList.PFirst := PElem
else
aList.PLast^.PNext := PElem;
aList.PLast := PElem;
end;
//Удаление элемента из однонаправленного списка по указателю на предыдущий элемент.
//Если указатель на предыдущий элемент равен NIL, то удаляется первый элемент списка.
procedure Del(var aList : TList; var aPPrev : TPElem);
var
PDel : TPElem;
begin
if aList.PFirst = nil then Exit;
if aPPrev = nil then begin
PDel := aList.PFirst;
aList.PFirst := PDel^.PNext;
end else begin
PDel := aPPrev^.PNext;
if PDel <> nil then aPPrev^.PNext := PDel^.PNext;
end;
if aList.PLast = PDel then aList.PLast := aPPrev;
if PDel <> nil then Dispose(PDel);
end;
//Удаление однонаправленного списка из памяти и инициализация.
procedure Free(var aList : TList);
var
PNext, PDel : TPElem;
begin
PNext := aList.PFirst;
while PNext <> nil do begin
PDel := PNext;
PNext := PNext^.PNext;
Dispose(PDel);
end;
Init(aList);
end;
//Распечатка однонаправленного списка.
procedure Print(const aList : TList);
var
PElem : TPElem;
begin
if aList.PFirst = nil then begin
Writeln('Список пуст.');
Exit;
end;
PElem := aList.PFirst;
while PElem <> nil do begin
if PElem <> aList.PFirst then Write(', ');
Write(PElem^.Data);
PElem := PElem^.PNext;
end;
end;
var
L : TList;
PElem, PPrev : TPElem;
Data : TData;
i, Code : Integer;
S : String;
begin
//Начальная инициализация списка.
Init(L);
короче не влезает
//Тип основных данных.
TData = Integer;
//Тип указателя на элемент списка.
TPElem = ^TElem;
//Тип элемента списка.
TElem = record
Data : TData; //Основные данные.
PNext : TPElem; //Указатель на следующий элемент списка.
end;
//Тип, описывающий однонаправленный список.
TList = record
PFirst, PLast : TPElem; //Указатели на первый и на последний элементы списка.
end;
//Начальная инициализация списка. Внимание! Эту процедуру можно выполнять
//только в отношении пустого списка! Иначе - будут утечки памяти.
procedure Init(var aList : TList);
begin
aList.PFirst := nil;
aList.PLast := nil;
end;
//Добавление элемента в конец однонаправленного списка.
procedure Add(var aList : TList; const aData : TData);
var
PElem : TPElem;
begin
New(PElem);
PElem^.Data := aData;
PElem^.PNext := nil;
if aList.PFirst = nil then
aList.PFirst := PElem
else
aList.PLast^.PNext := PElem;
aList.PLast := PElem;
end;
//Удаление элемента из однонаправленного списка по указателю на предыдущий элемент.
//Если указатель на предыдущий элемент равен NIL, то удаляется первый элемент списка.
procedure Del(var aList : TList; var aPPrev : TPElem);
var
PDel : TPElem;
begin
if aList.PFirst = nil then Exit;
if aPPrev = nil then begin
PDel := aList.PFirst;
aList.PFirst := PDel^.PNext;
end else begin
PDel := aPPrev^.PNext;
if PDel <> nil then aPPrev^.PNext := PDel^.PNext;
end;
if aList.PLast = PDel then aList.PLast := aPPrev;
if PDel <> nil then Dispose(PDel);
end;
//Удаление однонаправленного списка из памяти и инициализация.
procedure Free(var aList : TList);
var
PNext, PDel : TPElem;
begin
PNext := aList.PFirst;
while PNext <> nil do begin
PDel := PNext;
PNext := PNext^.PNext;
Dispose(PDel);
end;
Init(aList);
end;
//Распечатка однонаправленного списка.
procedure Print(const aList : TList);
var
PElem : TPElem;
begin
if aList.PFirst = nil then begin
Writeln('Список пуст.');
Exit;
end;
PElem := aList.PFirst;
while PElem <> nil do begin
if PElem <> aList.PFirst then Write(', ');
Write(PElem^.Data);
PElem := PElem^.PNext;
end;
end;
var
L : TList;
PElem, PPrev : TPElem;
Data : TData;
i, Code : Integer;
S : String;
begin
//Начальная инициализация списка.
Init(L);
короче не влезает
Похожие вопросы
- Упорядочить сведения о сотрудниках, имеющих рабочий стаж более 20 лет, в порядке возрастания их возраста С++
- Пусть дан упорядоченный список названий книг.
- как в паскале подсчитать количество символов в словах ?
- 1.Составьте блок-схему алгоритма и программу расположения четырех чисел в порядке возрастания.
- Укажите через запятую в порядке возрастания все основания систем счисления в которых запись числа 22 оканчивается на 4?
- Как сделать ряд чисел в порядке возрастания?
- кажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 75 оканчивается на 13
- Укажите через запятую в порядке возрастания все основания систем счисления, в которых запись числа 23 оканчивается на 2
- Нужно ввести массив из 10 элементов и отсортировать их в порядке возрастания методом пузырька, помогите, пожалуйста.
- Нужен массив, размером в 100 элементом, заполненный случайными числами, отсортированными в порядке возрастания