Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.05.2010, 04:15   #1
kapkan
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
Вопрос Очередь, упорядочить...

Cформировать очередь, содержащий целые числа. Упорядочить элементы очереди, не перемещая их.

Вот несколько недель уже бьюсь над этой штукой.
никак не получается упорядочить очередь.
самое лучшее что получилось - это упорядочивание всех, кроме первого...
Помогите, заранее спасибо...
Код:
t:=f;
s:=r;
While f<>s do
  begin
  d:=f;

              while d<>s do
                    if d.link.link=nil then break
                    else
                    begin
                      if (d.link.link = r) and (d.link.inf>r.inf)
                      then
                      begin
                            p:=d.link;
                            d.link:=d.link.link;
                            p2:=d.link.link;
                            d.link.link:=p;
                            d.link.link.link:=p2;
                            s:=d.link.link;

                      end;
                    if d.link.inf > d.link.link.inf then
                            begin
                            p:=d.link;
                            d.link:=d.link.link;
                            p2:=d.link.link;
                            d.link.link:=p;
                            d.link.link.link:=p2;
                            d:=d.link;
                            end
                      else d:=d.link;
                    end;
                            While t.link<>s do
        t:=t.link;
  s:=t;
  t:=f;
  end;
Memo1.clear;
while f<>nil do
Begin
memo1.lines.add(inttostr(f.inf));
f:=f.link;
 end;end;}

Последний раз редактировалось kapkan; 19.05.2010 в 09:13.
kapkan вне форума Ответить с цитированием
Старый 19.05.2010, 08:57   #2
Z1000000
Форумчанин
 
Регистрация: 04.05.2010
Сообщений: 495
По умолчанию

Упорядочить не перемещая - это , в смысле, перенаправить указатели?
Выложи весь код. В твоих d.link.link.inf - трудно разобраться ( имею в виду себя ).
Нажми на весы, поставь +
Для благодарностей : WebMoney WMR R252732729948
Z1000000 вне форума Ответить с цитированием
Старый 19.05.2010, 09:19   #3
kapkan
Новичок
Джуниор
 
Регистрация: 19.05.2010
Сообщений: 2
По умолчанию

ну. надо указатели перекидать.
создание
Код:
procedure TFormOchered.Button4Click(Sender: TObject);
begin
edit1.SetFocus;
  if edit1.Text='' then Error(2)
  else
   begin     //if ' '
    ch:=strtoint(edit1.text);
    if dl=0 then
      begin           //f=nil then
       new(r);
       r.inf:=ch;
       r.link:=nil;
       f:=r;
       inc(dl);
      end             //f=nil then
    else
     begin          //f=nil else
 new(k);
 k.inf:=ch;
 k.link:=nil;
 r.link:=k;
 r:=k;
 inc(dl);
 end;                 //f=nil else
 memo1.lines.Add(inttostr(ch));
 edit1.Clear;
 edit2.Text:=inttostr(dl);
end;               //if ' '
end;
упорядочивание
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
d:=f;
t:=f;
s:=r;
While f<>s do
  begin
  d:=f;

              while d<>s do
                    if d.link.link=nil then break
                    else
                    begin
                      if (d.link.link = r) and (d.link.inf>r.inf)
                      then
                      begin
                            p:=d.link;
                            d.link:=d.link.link;
                            p2:=d.link.link;
                            d.link.link:=p;
                            d.link.link.link:=p2;
                            s:=d.link.link;
                      end;
                    if d.link.inf > d.link.link.inf then
                            begin
                            p:=d.link;
                            d.link:=d.link.link;
                            p2:=d.link.link;
                            d.link.link:=p;
                            d.link.link.link:=p2;
                            d:=d.link;
                            end
                      else d:=d.link;
                    end;
                            While t.link<>s do
        t:=t.link;
  s:=t;
  t:=f;
  end;
Memo1.clear;
while f<>nil do
Begin
memo1.lines.add(inttostr(f.inf));
f:=f.link;
end;
кароче f - это откуда считываем(вроде голова называется)
r - указатель на конец.
остальные просто дополнительные.

Последний раз редактировалось kapkan; 19.05.2010 в 09:21.
kapkan вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Упорядочить матрицы kjiokl Помощь студентам 4 15.03.2010 16:33
упорядочить матрицу Денни Помощь студентам 11 18.02.2010 19:44
Упорядочить матрицу J0n1cK Паскаль, Turbo Pascal, PascalABC.NET 0 17.05.2009 20:02
Упорядочить по возрастанию элементы.. TemaTim Паскаль, Turbo Pascal, PascalABC.NET 2 16.05.2009 19:00
Как упорядочить ячейки Rashanea Microsoft Office Excel 4 17.12.2008 21:32