Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Упорядоченный динамический список Help Please


(MiTch) ©   (2007-10-23 21:49:00) 

Помогите пожалуйста разобрать алгоритм. Самостоятельно не смогаю.


type
 TPStudent=^TStudent;

 TStudent = record
       f_name:string[20];  
l_name:string[20];  
next: TPStudent;    
 end;

var
 head: TPStudent;  

procedure TForm1.Button1Click(Sender: TObject);
var
  node: TPStudent;  
  curr: TPStudent;  
  pre:  TPStudent;  
begin
  new(node);
  node^.f_name:=Edit1.Text;  
  node^.l_name:=Edit2.Text;  
 

  curr:=head;
  pre:=NIL;
 
  while (curr <> NIL)and(node.f_name > curr^.f_name)  do
  begin
   

    pre:= curr;
    curr:=curr^.next;

  end;
  if pre = NIL
    then
       begin
         
         node^.next:=head;
  head:=node;

       end
    else
       begin
         
  node^.next:=pre^.next;
         pre^.next:=node;

       end;

  Edit1.text:='';
  Edit2.text:='';
  Edit1.SetFocus;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
    head:=NIL;
end;


Понятно как вводится первый элемент в список, Головной указывает на первый введенный .
Далее ввожу новый узел, и здесь начинается "путаница" ...
curr:=head , pre:=curr , curr:=curr^.next. что тут чему равно ...
прямо не знаю что и делать)


(MiTch)   (2007-10-28 09:56:00) [1]

Да! Да я догнал.Поздравьте меня.
А теперьче будем удалять ненужные элементы из списка)


(MiTch)   (2007-10-24 19:33:00) [2]


> curr - это указатель на область памяти, аcurr^ - это значение,
>  на которое ссылается указатель.
это как раз понятно. понятно и как организовать просто динамический список. Не совсем ясно когда указатели друг на друга ссылаются. Сразу не определить что чему равно. Короче будем искать книжки, раз рекомендуют.


Германн   (2007-10-24 01:12:00) [3]


> Джо ©   (24.10.07 00:34) [4]

Не знаю почему, но код в [0]
> (curr <> NIL)and(node.f_name > curr^.f_name)

сразу навёл меня на мысль о "чужом языке" :)


Джо   (2007-10-24 00:34:00) [4]

А еще это все неплохо описано в книге Вирта «Алгоритмы и структуры данных». И даже с примерами не на вражеском языке :)


Галинка   (2007-10-24 00:32:00) [5]

А еще именно упорядоченный список хорошо, просто замечательно описан в книге Кернигана и Ричи "Язык программирования Си (ANSI C)". Только там синтаксис соответственно языка си. Но концепт я думаю тот же...


Галинка   (2007-10-24 00:29:00) [6]

если найдешь, то возьми книгу Файсмана по ТурбоПаскалю. Там списки очень подробно и наглядно объясняются.


Efir   (2007-10-23 22:15:00) [7]

curr - это указатель на область памяти, а
curr^ - это значение, на которое ссылается указатель.


Наверх

Титульная страница Поиск, карта сайта Написать письмо