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

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

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2012, 15:36   #1
Tattoquardas
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 16
Восклицание Задача на списки

Список содержит элементы x1,x2,...xn. Получить список вида xn,...x1,x1,...xn.

Прошу помочь обьяснить как развернуть список в обратном порядку, то есть, как сделать список вида xn,...x1?
Tattoquardas вне форума Ответить с цитированием
Старый 18.03.2012, 15:53   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

1) вывести список в обратном порядке или обеспечить обратный порядок в самом списке ?

2) список одно- или двухсвязный?

и вообще, давайте ваш код, рассказывайте, что не получается, получите конкретную помощь...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 18.03.2012, 16:07   #3
Tattoquardas
Пользователь
 
Регистрация: 15.10.2011
Сообщений: 16
По умолчанию

список односвязный. для хотелось бы вообще понять, как делается разворот.

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

Код:
uses crt;
const k=5;
type
  chain=^list;
  list=record;
    num:integer;
    next:chain;
  end;
var iter, tmp, head:chain;
    n,i:integer;
begin
  head:=nil;
  for i:=1 to k do
    begin
      readln(n);
      if head=nil then
        begin

         new(head);
         iter:=head;
         head^.num:=n;
         head^.next:=nil;
         end
        else
          begin
            new(tmp);
            tmp^.num:=n;
            tmp^.next:=nil;
            iter^.next:=tmp;
            iter:=iter^.next;
            tmp:=nil;
          end;
      end;
  iter:=head;
  end.

________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 18.03.2012 в 19:21.
Tattoquardas вне форума Ответить с цитированием
Старый 19.03.2012, 02:25   #4
Blondy
Участник клуба
 
Аватар для Blondy
 
Регистрация: 07.07.2009
Сообщений: 1,385
По умолчанию

К сожалению, на С не пишу, поэтому сам код предоставить не могу. Могу лишь дать повод к размышлению по поводу разворота.

Вот Вы начинаете заполнять список с head. И у вас там есть условие
Код:
 if head=nil then
и вы постоянно перебрасываете указатель на новый элемент....Теперь вам фактически нужен еще один указатель, например last (вешается на последний элемент списка) или обойтись уже имеющимся head. И по условию - если поле next последнего элемента NULL, аккуратненько перебрасываете рабочий указатель начиная с указателя last (с полем next==NULL) на предидущий элемент до тех пор, пока не дойдете до дна стека... то есть указатель не будет равен NULL.
"Все мы жаждем чудес. Чисто человеческое свойство." Carl Sagan
Blondy вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задача на списки blademish Паскаль, Turbo Pascal, PascalABC.NET 7 06.02.2012 01:20
задача на списки Liubashka Помощь студентам 0 16.12.2011 14:37
задача на списки ekaterina123 Помощь студентам 1 03.11.2011 17:44