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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2015, 11:29   #1
dimorik
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 51
Вопрос Неправильные порядок списка

Со списками давно не работал. Подскажите что не так?
Код:
type
    Tfinal_res = ^final_res;

    final_res = Record
    number: integer;
    phone: string;
    next: Tfinal_res;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
  p_temp, p_new: Tfinal_res;
  head: Tfinal_res;

begin
    p_temp := nil;
    p_new := nil;
    head := nil;

    Memo1.Lines.Add('Запись списка...');

    for i := 0 to 9 do
       begin
            new(p_new);
            p_new^.number := i;
            p_new^.phone := IntToStr(i);
            Memo1.Lines.Add(IntToStr(p_new^.number)+' --- '+p_new^.phone);

           if head = nil then
              begin
                p_new^.next := p_temp;
                p_temp := p_new;
                head := p_temp;
              end
              else
              begin
                p_new^.next := p_temp^.next;
                p_temp^.next := p_new;
              end;
       end;

        Memo1.Lines.Add('');
        Memo1.Lines.Add('Чтение списка...');

        p_temp := head;
        while p_temp <> nil do
          begin
            Memo1.Lines.Add(IntToStr(p_temp^.number)+' --- '+p_temp^.phone);
            p_temp := p_temp^.next; // указатель на следующий элемент

          end;

end;
Почему порядок чтения не такой как порядок записи?
dimorik вне форума Ответить с цитированием
Старый 23.01.2015, 12:03   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
           p_new^.next := nil;
           if head = nil then head := p_new
                         else p_temp^.next := p_new;
           p_temp := p_new;
вместо
Код:
           if head = nil then
              begin
                p_new^.next := p_temp;
                p_temp := p_new;
                head := p_temp;
              end
              else
              begin
                p_new^.next := p_temp^.next;
                p_temp^.next := p_new;
              end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2015, 12:26   #3
dimorik
Пользователь
 
Регистрация: 23.08.2008
Сообщений: 51
По умолчанию

Спасибо. Работает.
dimorik вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
excel вставляет неправильные значения Volodymyr Microsoft Office Excel 6 13.02.2019 11:19
Неправильные циклы Obey177 Общие вопросы .NET 3 18.11.2014 19:14
Обратный порядок списка RevenGGe Паскаль, Turbo Pascal, PascalABC.NET 8 17.10.2012 11:20
как по вводу первых букв слова из списка подхватывать возможные вариации из списка 7EBEP Microsoft Office Excel 2 05.03.2012 11:11
Правильные и неправильные команды Trishi Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 22.07.2009 02:53