Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.11.18;
Скачать: CL | DM;

Вниз

Упорядоченный динамический список Help Please   Найти похожие ветки 

 
(MiTch) ©   (2007-10-23 21:49) [0]

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


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. что тут чему равно ...
прямо не знаю что и делать)


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

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


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

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


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

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


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

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


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


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

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

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


 
(MiTch) ©   (2007-10-24 19:33) [6]


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


 
(MiTch) ©   (2007-10-28 09:56) [7]

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



Страницы: 1 вся ветка

Текущий архив: 2007.11.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
15-1191941304
Pkrge
2007-10-09 18:48
2007.11.18
Подскажите хорошие книги для изучения SQL


2-1193397273
vr-online
2007-10-26 15:14
2007.11.18
StringGrid. bmp в определенной ячейки.


8-1169448568
Jimmy
2007-01-22 09:49
2007.11.18
Работа с SetWorldTransform


15-1192519969
Александр
2007-10-16 11:32
2007.11.18
Автоматическое копирование обновлённой версии программы


2-1193211223
Ega23
2007-10-24 11:33
2007.11.18
Назначение Parent у TFrame