Dynamic31Dynamic69 -
, ,
. -
,
, . Next
Prev -
, , ,
, (, -
Prev
Next ). , -
, : Barrier,
, Current, (
, ). Data -
;
0.
, .
Dynamic70Dynamic80 -
.
Dynamic70◦. P 1 P 2 -
, ,
( , P 1= P 2= nil). -
(. Dynamic55),
.
0 Next Prev -
( -
Next Prev
). .
-
.
Dynamic71. P 1 P 2 -
( . Dynamic70).
132
. . . Programming Taskbook 4.6
, -
.
,
( -
).
.
.
Dynamic72. P 1 P 2
( . Dynamic70). -
,
( -
).
|
|
( -
, ).
-
.
Dynamic73. P 1 P 2
( . Dynamic70). -
,
( -
).
( -
, ).
-
.
Dynamic74◦. P 1 P 2 -
( . Dynamic70).
N (> 0) N . TListB
Barrier Current PNode (
) LBInsertLast(L, D),
D L (L
TListB, D
). . -
(
) .
Dynamic75. P 1 P 2 -
. N (> 0) N -
. TListB (. Dynamic74),
LBInsertFirst(L, D), D
L (L TListB, D -
). .
(
) .
Dynamic76. P 1 P 2 -
. . TListB (. -
Dynamic74), LBInsertBefore(L, D), -
D L (L
TListB, D -
). .
.
Dynamic77. P 1 P 2 -
. . TListB (. -
Dynamic74), LBInsertAfter(L, D),
D L (L
TListB, D
). . -
.
Dynamic78◦. P 1 P 2 -
|
|
. TListB (. Dynamic74),
LBToFirst(L) ( -
L), LBToNext(L) ( L ),
LBSetData(L, D) ( L D
, )
IsBarrier(L) ( TRUE,
L , FALSE -
). L TListB; LBToFirst LBToNext
.
, -
134
. . . Programming Taskbook 4.6
.
;
.
Dynamic79. P 1 P 2 -
. TListB (. Dynamic74),
LBToLast(L) ( L),
LBToPrev(L) ( L ) -
LBGetData(L) ( -
L). L TListB; LBToLast
LBToPrev . -
, IsBarrier
Dynamic78, ,
.
. -
.
Dynamic80. P 1 P 2 -
, -
. TListB (. Dynamic74), -
LBDeleteCurrent(L) , L
(L -
TListB). ,
, .
, .
, -
0. ,
IsBarrier Dynamic78,
( , )
. .
(.NET)
Dynamic, -
.NET: C# Visual Basic
.NET.
, , .
Node.
(.NET)
Programming Taskbook (, pt4net.dll, -
PT4) :
:
public Node();
public Node(int aData);
public Node(int aData, Node aNext);
public Node(int aData, Node aNext, Node aPrev);
( ):
public int Data;
public Node Next;
public Node Prev;
, , -
:
public void Dispose();
Dynamic1Dynamic2,
(Dynamic3Dynamic28) Node -
Prev (. Dynamic1); -
(Dynamic29Dynamic80) Node
(. Dynamic29).
.NET ,
|
|
, ,
, -
Node, (
Put PT, pt4net.dll).
, , -
, 1.
null ( C#).
Dynamic1. A 1 Node, Data
Next Node. Next
A 2 ( Node). Data
, A 2.
Dynamic2◦. A 1 Node.
Next Node, , , -
, Next, null (-
136
. . . Programming Taskbook 4.6
, ).
Data , (
) .
Dynamic3Dynamic13 (stack) -
- Node (. Dynamic2).
Next null. (top)
. -
Node ( -
null).
Data.
Dynamic3◦. D A 1 .
D A 2 .
Dynamic4. N (> 0) N . , -
( ),
.
Dynamic5◦. A 1 . (-
) D, A 2
. ,
A 2= null.
, , Dispose.
Dynamic6. A 1 , .
. -
.
, ,
Dispose.
Dynamic7. A 1 ( , A 1= null).
.
N ( 0). -
, ,
Dispose.
Dynamic8◦. A 1 A 2 .
(
, )
(.NET)
.
Node .
Dynamic9◦. A 1 A 2 . -
|
|
,
( -
, ).
,
. -
( ,
null). Node .
Dynamic10◦. A 1 . ,
, (
, ; -
).
( null). Node
.
Dynamic11◦. A 1 ( , A 1= null).
N (> 0) N . IntStack,
:
top Node ( );
aTop ;
Push(D), -
D (D );
Put ( ), top,
Put PT.
Push -
( )
, Put IntStack.
Dynamic12◦. A 1, .
IntStack (. Dynamic11) Pop -
( ), ()
, Dispose.
Pop -
. (
, -
138
null).
. . . Programming Taskbook 4.6
Dynamic13. A 1 . IntStack (.
Dynamic11) : IsEmpty ( TRUE,
, FALSE ) Peek (-
, ).
. , Pop
Dynamic12, (
, )
. IsEmpty -
, ,
.
Dynamic14Dynamic28 (queue) -
- Node (. Dynamic2).
Next null. (-
, head) , (, tail)
.
, ,
. -
null. ,
Data.
Dynamic14. 10 . ,
(
, ), A 1 A 2
.
Dynamic15. 10 . : -
(1, 3,..., 9),
(2, 4,..., 10);
.
, .
Dynamic16. 10 . : -
,
(
). ,
(.NET)
( ;
null).
Dynamic17. D A 1 A 2 (
|
|
, A 1= A 2= null). -
D
.
Dynamic18. D A 1 A 2 , -
. D
() . -
,
.
Dispose.
Dynamic19. N (> 0) A 1 A 2 -
. N
( N ,
).
( null).
Dispose.
Dynamic20. A 1 A 2 . -
,
, ( -
,
).
( null).
Dispose.
Dynamic21. ; A 1 A 2,
A 3 A 4( ,
null). (
)
. Node
.
Dynamic22. N (> 0) ;
A 1 A 2, A 3 A 4. N
.
N , -
. ,
140
. . . Programming Taskbook 4.6
( null).
Node .
Dynamic23. ; A 1
A 2, A 3 A 4.
,
( ,
).
, (
null). Node .
Dynamic24. ; A 1 A 2,
A 3 A 4. .
, -
( ).
. Node
.
Dynamic25◦. ; A 1
A 2, A 3 A 4.
( ). -
.
. Node
, Data .
Dynamic26. A 1 A 2 (
, A 1 = A 2 = null). N (> 0)
N . IntQueue, :
head tail Node ( );
aHead, aTail -
;
Enqueue(D), -
D (D );
Put ( ), head
tail, Put PT.
Enqueue
,
Put IntQueue.
Dynamic27. A 1 A 2 , -
. IntQueue (.
(.NET)
Dynamic26) Dequeue ( ), -
() ,
Dispose. Dequeue
.
(
, null).
Dynamic28. A 1 A 2 .
IntQueue (. Dynamic26) IsEmpty
( ), TRUE, , FALSE
.
, Dequeue Dynamic27,
(
, ) .
IsEmpty
.
Dynamic29. A 2 Node, Data -
, Prev Next Node.
Prev A 2 ,
Next .
Data , A 1 A 3
.
Dynamic30◦. A 1 -
Node, Next. -
Prev , (-
) ,
( Next), -
( Prev). Prev
null. A 2 -
.
Dynamic31Dynamic69 (doubly
linked list) - Node,
, (. Dynamic30).
Next Prev
142
. . . Programming Taskbook 4.6
null.
,
: (first),
(last) (current). -
null. ,
Data.
Dynamic31. A 0 -
. N , A 1
A 2 .
Dynamic32. D 1 D 2 A 0
. -
D 1, D 2.
.
Dynamic33. D A 0 -
.
D .
Dynamic34. D A 0 -
.
D .
Dynamic35. A 1 A 2 -
, .
(
)
.
Dynamic36. A 1 A 2 -
, .
(
)
.
Dynamic37. A 1 . -
(
)
.
Dynamic38. A 1 . -
(
)
(.NET)
.
Dynamic39. A 1 . -
(
)
.
Dynamic40. A 1 . -
(
)
.
Dynamic41. A 0 -
. : ,
, ,
( ;
null).
Dispose.
Dynamic42. A 1 , -
. -
.
Dispose.
Dynamic43. A 1 .
(
, null).
Dispose.
Dynamic44. A 0 -
.
.
Node , Data .
Dynamic45. A 0 -
.
.
Node , Data .
Dynamic46. K (> 0) A 0
. K
( K ,
). -
144
. . . Programming Taskbook 4.6
. Node
, Data .
Dynamic47. K (> 0) A 0
. K
( K ,
). -
. Node
, Data .
Dynamic48. A X A Y
( A X A Y, -
).
.
Node , Data .
Dynamic49◦. A 1 . -
,
( )
. Node ,
Data .
Dynamic50. A 1 . -
, -
( )
. Node ,
Data .
Dynamic51. -
: A 1 A 2 , A 0 -
. , -
( ) ,
.
Node .
Dynamic52. -
: A 1 A 2 , A 0
. ,
( ) -
,
. Node .
Dynamic53. A X A Y -
(.NET)
; A X A Y,
. ,
( ), (
).
. , -
null. Node
.
Dynamic54. A X A Y -
; A X A Y,
. ,
( ), (
).
. ,
null. Node .
Dynamic55◦. A 1 . -
, Next
, Prev
. ,
.
Dynamic56. A 1 A 2
, . -
(. Dynamic55),
, -
. A 3 A 4
( A 3 -
, A 4 ). Node .
Dynamic57. K (> 0) A 1 A 2
.
K ( -
)
.
(. Dynamic55),
, K. -
Node .
Dynamic58. K (> 0) A 1 A 2
.
146
. . . Programming Taskbook 4.6
K (
)
.
(. Dynamic55),
, K.
Node .
Dynamic59◦. A 1, A 2 A 3 , -
( ,
A 1= A 2= A 3= null). N (> 0) N .
IntList, :
first, last, current Node (,
);
aFirst, aLast, aCurrent , -
;
InsertLast(D), -
D (D ,
);
Put ( ), first,
last current, Put PT.
InsertLast
( ) ,
, Put
IntList.
Dynamic60. A 1, A 2 A 3 , -
( ,
A 1 = A 2 = A 3 = null). N (> 0) N .
IntList (. Dynamic59) InsertFirst(D),
D (D
). -
. InsertFirst
(
) ,
.
Dynamic61. A 1, A 2 A 3 , -
. .
IntList (. Dynamic59) InsertBefore(D),
(.NET)
D -
(D ).
. InsertBefore
,
.
Dynamic62. A 1, A 2 A 3 , -
. .
IntList (. Dynamic59) InsertAfter(D),
D -
(D ).
. InsertAfter
,
.
Dynamic63◦. A 1, A 2 A 3 , -
. IntList (. -
Dynamic59) ToFirst (
), ToNext ( ,
), SetData(D) ( -
D ), IsLast (
TRUE, ,
FALSE ). ToFirst, ToNext IsLast
; D SetData
.
-
, ,
.
Dynamic64. A 1, A 2 A 3 , -
. IntList (.
Dynamic59) ToLast ( -
), ToPrev ( , -
) GetData (
), IsFirst ( TRUE, -
, FALSE
). .
,
. .
148
. . . Programming Taskbook 4.6
Dynamic65. A 1, A 2 A 3 , -
, .
IntList (. Dynamic59) DeleteCurrent
( ), -
.
, , -
. DeleteCurrent -
Dispose. DeleteCurrent
. -
,
( null).
Dynamic66. A 1, A 2 A 3 , -
. IntList (.
Dynamic59) Split(L 1, L 2), -
L 1 L 2
( , L 1 , -
). IntList;
, . -
.
Node Split .
,
( null).
Dynamic67. ,
. IntList (.
Dynamic59) Add(L 1, L 2), -
L 1( ) L 2;
L 1 . -
.
IntList .
Node Add .
,
.
Dynamic68. ,
. IntList (.
Dynamic59) Insert(L 1, L 2), -
(.NET)
L 1( ) L 2
; L 1 .
L 2 .
IntList .
Node Insert . -
, -
.
Dynamic69. ,
( ).
IntList (. Dynamic59)
MoveCurrent(L 1, L 2), L 1
L 2( L 2
; L 1 -
, , ).
IntList .
Node MoveCurrent .
,
( null).