![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
|
|
#1
|
|||
|
|||
|
вот тест программы, она вводит и выводит числа. числа хранятся в двусвязном списке с фиктивным элементом.
Код:
Type
List=^element;
element=record
num : integer;
right,left : List;
end;
Procedure Creation(var sent : List);
Begin
new(sent);
sent^.left:=sent;
sent^.right:=sent;
end;
Procedure Insertion(p : List; y : integer);
Var
q : List;
Begin
new(q);
q^.num:=y;
q^.left:=p;
q^.right:=p^.right;\\ что происходит здесь?
p^.right^.left:=q;\\ и здесь.
p^.right:=q;
End;
Var
i, k,x : integer;
sent,p : List;
Begin
Reset(input,'input.txt');
Rewrite(output,'output.txt');
Creation(sent);
while not seekeof do begin
read(x);
Insertion(sent,x);
end;
p:=sent^.left;
while p<>sent do begin
Write(p^.num,' ');
p:=p^.left;
end;
end |
|
#2
|
||||
|
||||
|
Если вы про комменты "здесь и здесь" - то
создаем новый элемент q, в его правое значение пишем правое текущей позиции (куда вставляем), потом предыдущий элемент для P связываем с q. были элементы в таком порядке: p.right p p.left а стали в таком: p.right q p p.left Т.е. СЛЕВА от p.right (вторая интересующая строка) ставится Q, а СПРАВА от Q (первая интересующая строка) ставится p.right. Последний раз редактировалось Bargest, 14.05.2011 в 23:53. |
|
#3
|
|||
|
|||
|
т.е. вот этим действием
Код:
p^.right^.left:=q; Код:
q^.left:=p; Код:
q^.right:=p^.right; Код:
p^.right^.left:=q; |