IPB
ЛогинПароль:

> Прочтите прежде чем задавать вопрос!

1. Заголовок темы должен быть информативным. В противном случае тема удаляется ...
2. Все тексты программ должны помещаться в теги [code=pas] ... [/code], либо быть опубликованы на нашем PasteBin в режиме вечного хранения.
3. Прежде чем задавать вопрос, см. "FAQ", если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Паскаля (исключение - только с согласия модератора).
5. НЕ используйте форум для личного общения, все что не относится к обсуждению темы - на PM!
6. Одна тема - один вопрос (задача)
7. Проверяйте программы перед тем, как разместить их на форуме!!!
8. Спрашивайте и отвечайте четко и по существу!!!

> Как отсортировать?, двусторонний динамич. список
сообщение
Сообщение #1


Гость






По возрастанию ли - убыванию - нет разницы. smile.gif Надо всего лишь создать некую процедуру, что для таких АСОВ как Вы - не составит труда.. ^_^ Жду с нетерпением Вашей помощи! ;)

Код
program rabota;
type spis = ^el;
     el  = record
        next:spis;
        data : integer;
        back : spis;
     end;
             
procedure sozdat_spisok ( var nach, konc : spis );
  var g : spis;
      x : integer;
begin  { sozdat_spisok }
nach  := nil;    
konc := nil;
writeln('Sozdaem spisok, vvedite celye 4isla.');
writeln('Hotite zakon4it - voodite 0.');
readln ( x );
while x <> 0 do
   begin
     if nach = nil
     then
       begin
         new( g );
         g^.data  := x;
         g^.next := nil;
         g^.back := nil;
         nach       := g;
         konc      := g;
         readln( x );
       end
     else  
       begin
         new( g );
         g^.data    := x;
         g^.next   := nil;
         g^.back := konc;
         konc^.pnext:=g;
         konc        := g;
         readln( x );
       end
   end;
writeln('Spisok uspe6no sozdan');
end; { Sozdat spisok }

procedure pe4atat( nach : spis );
var p : spis;
begin  { pe4atat }
  writeln('pe4ataem spisok:' );
  p := nach;
  while p <> nil do
    begin
      write( p^.data, ' ');
      p := p^.next;
    end;
  writeln;
end; { pe4atat }

procedure uni4tozhit( var nach, konc : spis );
var s : spis;
begin  { uni4tozhit }
  writeln('uni4tozhaem spisok s konca.');
  while pr <> nil do
  begin

     s := nach;
     if konc <> nach
     then
       begin
         while (s^.next <> konc) and (nach<>konc) do
               s := s^.next;
         writeln('  uni4tozhaem ', s^.next^.data);
         konc := s;
         dispose( s^.next );
       end
     else
       begin
         writeln('  Ui4tozhaem 1-j: ', s^.data);
         dispose( s );
         nach  := nil;
         konc := nil;
       end;
  end;
end; { uni4tozhit }

var na4alo, konec : spis;
begin
  sozdat_spisok ( na4alo, konec );
  pe4atat ( na4alo );
 uni4tozhit(na4alo,konec);

end.
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2


Гость






Ну, тогда вспомни как выглядит пузырьковая сортировка:
Type
arrType = Array[1 .. n] Of Integer;

Procedure Bubble(Var ar: arrType; n: integer);
Var i, j, T: Integer;
Begin
For i := 1 To n Do
For j := n DownTo i+1 Do
If ar[Pred(j)] > ar[j] Then { < }
Begin
T := ar[Pred(j)]; ar[Pred(j)] := ar[j]; ar[j] := T
End
End;

и сделай ее имитацию на списке:
{ указатель на n -ый элемент списка }
function find_n(list: spis; n: integer): link;
begin
while (list <> nil) and (n >= 0) do begin
list := list^.next; dec(n);
end;
find_n := list
end;

Procedure BubbleList(Var list: spis);
Var n, i, j, T: Integer;
Begin
n := { здесь - длина списка }
For i := 1 To n Do
For j := n DownTo i+1 Do
{ > или < в зависимости от направления }
If find_n(list, pred(j))^.data > find_n(list, j)^.data Then
Begin
{ можно, конечно и запомнить адреса j и j - 1 элементов,
чтобы не вычислять повторно }
T := find_n(list, pred(j))^.data;
find_n(list, pred(j))^.data := find_n(list, j)^.data;
find_n(list, j)^.data := T;
End
End;

вот так это выглядит в случае "пузырька". Подставь сюда любой другой метод сортировки, он также будет работать...
 К началу страницы 
+ Ответить 

Сообщений в этой теме
pukelis   Как отсортировать?   3.05.2005 16:17
volvo   Ну, во-первых, сразу возникает вопрос - можно или …   3.05.2005 16:51
Guest   Все переделывать как-то неохота, тк на етой проге …   3.05.2005 17:00
volvo   Ну, тогда вспомни как выглядит пузырьковая сортиро…   3.05.2005 17:34
Pukelis   TX!! вот именно имитация пузырька мне и бы…   3.05.2005 17:45
Guest   у меня что-то компилятор ругается на function fin…   3.05.2005 18:08
volvo   Ну да, конечно. Я в одном месте поменял, в другом …   3.05.2005 18:14
Pukelis   задача такая: используя инфу из 2-х разных файлов …   3.05.2005 18:26
volvo   То есть, как я понял, список содержит И имя, И фа…   3.05.2005 18:55
Guest   program Noname1; uses crt; type klient=^kli; …   3.05.2005 19:03
volvo   Ну так тогда в чем дело? Просто объедини все поля …   3.05.2005 19:24
Pukelis   Вот, перевел прогу ))) Посмотри, куда что вставить…   3.05.2005 20:41
volvo   Вот так (см. аттач)... А теперь можешь спокойно со…   3.05.2005 20:57
Pukelis   попробовал я сделать как ты говорил.. не пашет ниф…   3.05.2005 22:42
volvo   Только одна просьба - такие большие исходники прис…   3.05.2005 23:17
Pukelis   :) Пасииб, да, компилируется превосходно, но при р…   3.05.2005 23:54
volvo   :blink: Sorry... My fault Ошибка закралась вот …   4.05.2005 0:16
Pukelis   та же фигня (( Вот как прога выглядит сейчас (см. …   4.05.2005 0:35
volvo   Pukelis, а ты уверен, что N содержит правильное зн…   4.05.2005 1:02
Pukelis   ошибка пропала, но сортировка не происходит (( Ком…   4.05.2005 2:07
volvo   В-общем, с такими файлами данных ты замучаешься де…   4.05.2005 3:07
Pukelis   :unsure: поетому я и не хотел ее сразу выкладыват…   4.05.2005 3:34
volvo   Значится, так... :) Вот что мне удалось сделать п…   4.05.2005 5:53
Pukelis   :) ПАСИБ!!! :molitva: Ты - просто су…   4.05.2005 11:09
Pukelis   Ну а вот и вопросы, которые я собирался тебе задат…   6.05.2005 0:59
volvo   Значит, по-порядку: :) Пробел - это для гаранти…   6.05.2005 2:12
Pukelis   спасибо, ВСЕ понял! :) Узнал много нового для …   6.05.2005 2:21
sheka   я бы использовал не пузырьковую, а гибридную: тот …   1.06.2011 20:43


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 24.04.2024 23:06
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name