Главная страница
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.022 c
15-1192042472
Galinka
2007-10-10 22:54
2007.11.18
Когда "кило" это 2 в 10-ой, а когда - в 10 в 3-ей?


2-1193381641
webpauk
2007-10-26 10:54
2007.11.18
ToolButton &amp; DropDownMenu


15-1192064592
Маск
2007-10-11 05:03
2007.11.18
Какой лучше использовать компонент, для отображения данных в


2-1193064900
AlexeyNekrasov
2007-10-22 18:55
2007.11.18
TCheckBoxList


3-1183989229
Alex13
2007-07-09 17:53
2007.11.18
Как перенести прогу с базой на бругой комп