k:=1;коэфициэнт проверяемой цифры
s:=1;индикатор выхода из цикла
repeatцикл сортировки
...очистка массива-списка В и цикл проверки всего списка А
x:=(a^.data div k) mod 10;получаем очередную цыфру
[color=green]тут переключение связей и расположение очередного элемента в нужное место, сильно не пинайте, т.к. писал без проверки
c:=a^.next;
a^.next:=b[x]^.next;
b[x]^.next:=a,
a:=c;
...окончание цикла
. . . тут формирование списка А из массива-списка В
k:= k * 10;следующий коэфициэнт
s:= ((s+k)div 10)+((s+k)mod 10);проверяем всели цифры проверили
until s=0;
a^.next:=b[x]^.next;
const
n=13;{количество элементов}
m=1000;{число превышающее максимальное число разрядов}
var
a:array[1..n]of integer;{исходный массив}
b:array[0..9,1..n]of integer;{дополнительный массив}
k,l,i,j:integer;{служебные переменные}
begin
{создаем массив}
for i:=1 to n do
begin
a[i]:=random(m-1)+1;{создаем один элемент}
write(a[i]:6);{выводим его}
end;
writeln;
{коэфициэнт обрабатываемого разряда}
k:=1;
repeat
{сбрасываем дополнительный массив}
for i:=0 to 9 do
for j:=1 to n do
b[i,j]:=0;
{сортировка}
for i:=1 to n do
begin
j:=(a[i] div k)mod 10;{получаем цифру}
l:=1;{начинаем с первого элемента}
while b[j,l]<>0 do{ищем последний элемент}
inc(l);
b[j,l]:=a[i];{записываем его}
end;
{формируем исходный массив}
l:=1;
for i:=0 to 9 do
begin
j:=1;
while b[i,j]<>0 do
begin
a[l]:=b[i,j];{записываем текущий элемент}
write(a[l]:6);{выводим на экран, только для показа механизма сортировки}
inc(l);{увеличиваем счетчик в исходном массиве}
inc(j);{увеличиваем счетчик в дополнительном массиве}
end;
end;
writeln;
k:=k*10;{увеличиваем коэфициэнт обрабатываемого разряда}
until k=m;
readln;
end.
Если Вы уже зарегистрированы на Портале - войдите в систему, если Вы еще не регистрировались - пройдите простую процедуру регистрации.