рдпрд╣ рдкреЛрд╕реНрдЯ рдПрдХ рдЕрдиреБрд╡рд╛рдж рд╣реИ рдФрд░ рд╢реБрд░реБрдЖрддреА рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рд╣реИред рдЦреИрд░, рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдЕрдкрдиреЗ рд╡рд┐рд╢реНрд╡рд╡рд┐рджреНрдпрд╛рд▓рдпреЛрдВ рдХреЗ рдкреНрд░рд╛рдердорд┐рдХ рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рд╕реЗ рд╡реНрдпрд╛рдЦреНрдпрд╛рди рднреВрд▓ рдЧрдПред рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ, рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдпрд╛ рджреВрд╕рд░реЗ рд░реВрдк рдореЗрдВ рд╣рдм рдкрд░ рдЖ рдЧрдИ рд╣реИ, рд▓реЗрдХрд┐рди рдкреАрдПрдЪрдкреА рдФрд░ рдЗрд╕рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдЬреЛрд░ рд╣реИред
рдбреЗрдЯрд╛ рд╕реНрдЯреНрд░рдХреНрдЪрд░реНрд╕ рдпрд╛ рдПрдмреНрд╕рдЯреНрд░реИрдХреНрдЯ рдбреЗрдЯрд╛ рдЯрд╛рдЗрдк (
ADT ) рдПрдХ рдРрд╕рд╛ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕реЗ рдСрдкрд░реЗрд╢рди рдХреЗ рдПрдХ рд╕реЗрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬрд┐рд╕реЗ рдЦреБрдж рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдЗрди рдСрдкрд░реЗрд╢рдиреЛрдВ рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХрд┐рд╕ рд╕реАрдорд╛ рддрдХ рд╕реАрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВред
рд╣рдордореЗрдВ рд╕реЗ рдЕрдзрд┐рдХрд╛рдВрд╢ рд▓реЛрдЧ рд░реЛрдЬрдорд░реНрд░рд╛ рдХреА рдЬрд┐рдВрджрдЧреА рдореЗрдВ рд╕реНрдЯреИрдХ рдФрд░ рдХрддрд╛рд░ рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕реБрдкрд░рдорд╛рд░реНрдХреЗрдЯ рдХрддрд╛рд░ рдФрд░ рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛ рдХреЗ рдмреАрдЪ рдХреНрдпрд╛ рдЖрдо рд╣реИ? рдЗрд╕рдореЗрдВ рд╣рдо рдЗрд╕ рд▓реЗрдЦ рдХреЛ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВрдЧреЗ, рдЬрд┐рд╕рдореЗрдВ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рднреА рд╡рд░реНрдгрди рд╣реЛрдЧрд╛ред
UPD :
s01e02- рдЕрдиреЗрдХрддрд╛
- рдмрд╛рд░реА
- рд▓рдХрдбрд╝реА
рдЕрдиреЗрдХрддрд╛
рд╕реНрдЯреИрдХ рдХреЛ рдЖрдорддреМрд░ рдкрд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдореВрд╣ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд░реНрдгрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рдиреНрд╣реЗрдВ рдПрдХ рд╕рд╛рде рд╕рдореВрд╣реАрдХреГрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд╣рд╛рдВ рд╕рд╛рдорд╛рдиреНрдп рд╕реЗрдЯ рдХрд╛ рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдПрдХ рдХреЗ рдмрд╛рдж рдПрдХ рдЬрд╛рддрд╛ рд╣реИ - рдкреБрд╕реНрддрдХреЛрдВ рдпрд╛ рдЯреНрд░реЗ рдХрд╛ рдПрдХ рдвреЗрд░ред рдХрдВрдкреНрдпреВрдЯрд░ рд╡рд┐рдЬреНрдЮрд╛рди рдореЗрдВ, рд╕реНрдЯреИрдХ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХрд╛ рдПрдХ рд╕рдВрдЧреНрд░рд╣ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдирд┐рдпрдо рд╣реЛрддрд╛ рд╣реИ: рд╕реНрдЯреИрдХ рдкрд░ рд░рдЦреА рдЧрдИ рдЕрдВрддрд┐рдо рд╡рд╕реНрддреБ рд╕рд╛рдорд╛рдиреНрдп рд╕реВрдЪреА рд╕реЗ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рд╣реЛрддреА рд╣реИред рдЗрд╕ рдирд┐рдпрдо рдХреЛ "рд▓рд╛рд╕реНрдЯ рдПрдВрдЯрд░, рдлрд░реНрд╕реНрдЯ рдПрдВрдЯрд░" рдпрд╛
LIFO рднреА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдПрдХ рдЕрдиреБрд╡рд░реНрддреА рдирд┐рдпрдо рд╣реИ - рдкрд╣рд▓рд╛ рдЕрдВрджрд░ рдЖрдпрд╛, рдкрд╣рд▓рд╛ рдмрд╛рд╣рд░ рдЖрдпрд╛ (
рдПрдлрдЖрдИрдПрдлрдУ ), рд▓реЗрдХрд┐рди рдмрд╛рдж рдореЗрдВ рдЙрд╕ рдкрд░ рдФрд░ рдЕрдзрд┐рдХред
рдпрд╣ рдирд┐рдпрдо, LIFO, рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд┐рдЧрд░реЗрдЯ, рдорд┐рдард╛рдИ рдХреЗ рд▓рд┐рдП рд╡реЗрдВрдбрд┐рдВрдЧ рдорд╢реАрдиреЛрдВ рдореЗрдВ - рд╡рд╣рд╛рдВ рднрд░реА рд╣реБрдИ рдЕрдВрддрд┐рдо рд╡рд╕реНрддреБ рдкрд╣рд▓реЗ рдЬрд╛рд░реА рдХреА рдЬрд╛рдПрдЧреАред
рд╕реНрдЯреИрдХ рдХреА рдПрдХ рд╕рд╛рд░ рдкрд░рд┐рднрд╛рд╖рд╛ рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╕рднреА рдСрдкрд░реЗрд╢рди рдПрдХ рдЫреЛрд░ рдХреЗ рд╕рд╛рдкреЗрдХреНрд╖ рдкрд░рд┐рднрд╛рд╖рд┐рдд рд╣реЛрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдвреЗрд░ рдХреЗ рдКрдкрд░ред
рд╕реНрдЯреИрдХ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓ рд╕рдВрдЪрд╛рд▓рди:
- init - рдПрдХ рд╕реНрдЯреИрдХ рдмрдирд╛рдПрдВред
- рдзрдХреНрдХрд╛ - рд╕реНрдЯреИрдХ рдХреА рд╢реБрд░реБрдЖрдд (рд╢реАрд░реНрд╖) рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ, рдмрд╛рдХреА 1 рд╕реНрдерд┐рддрд┐ рдХреЛ рдиреАрдЪреЗ рд▓реЗ рдЬрд╛рддреЗ рд╣реБрдПред
- рдкреЙрдк - рд╕реНрдЯреИрдХ рд╕реЗ рдПрдХ рддрддреНрд╡ (рдФрд░ рд╣рдЯрд╛рдПрдВ) (рдКрдкрд░ рд╕реЗ)ред
- рд╢реАрд░реНрд╖ - рд╕реНрдЯреИрдХ рдХреЗ рдкрд╣рд▓реЗ рддрддреНрд╡ рдкрд░ рдореВрд▓реНрдп рд╣рдЯрд╛рдПрдВ (рд╣рдЯрд╛рдП рдмрд┐рдирд╛)ред
- ismmpty - рдЦрд╛рд▓реАрдкрди рдХреЗ рд▓рд┐рдП рд╕реНрдЯреИрдХ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
рдЖрдк рддрддреНрд╡реЛрдВ рдХреА рдЕрдзрд┐рдХрддрдо рд╕рдВрднрд╡ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреИрдХ рдХреЛ рднреА рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рдЯреНрд░рд┐рдлрд╝рд▓реНрд╕ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЬрдм рд╕реНрдЯреИрдХ рдЕрдм рддрддреНрд╡реЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рд╕реНрдЯреИрдХ рднрд░рд╛ рд╣реБрдЖ рд╣реИ рдФрд░ рдпрд╣ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рджреЗрддрд╛ рд╣реИ (рд╕реНрдЯреИрдХ рдУрд╡рд░рдлреНрд▓реЛ)ред рдЦреИрд░, рд╡рд┐рдкрд░реАрдд рд╕реНрдерд┐рддрд┐ - рдПрдХ рдЦрд╛рд▓реА рд╕реНрдЯреИрдХ (рд╕реНрдЯреИрдХ рдЕрдВрдбрд░рдлреНрд▓реЛ) рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ред
рдпрд╣ рдЬрд╛рдирддреЗ рд╣реБрдП рдХрд┐ рд╣рдорд╛рд░реЗ рд╕реНрдЯреИрдХ рдХреЛ LIFO рдФрд░ рдЗрд╕рдХреЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╣рдо рдЕрдкрдиреЗ рд╕реНрдЯреИрдХ рдХреЛ рдПрдХ рд╕рд░рдгреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЦрд╛рд╕рдХрд░ рдЬрдм рд╕реЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдзрдХреНрдХрд╛ рдФрд░ рдкреЙрдк рдСрдкрд░реЗрд╢рди рд╣реИрдВред рд╣рдорд╛рд░рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реЛрдЧрд╛:
<?php class ReadingList { protected $stack; protected $limit; public function __construct($limit = 10) {
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдордиреЗ array_push () рдФрд░ array_pop () рдХреЗ рдмрдЬрд╛рдп PHP рдлрд╝рдВрдХреНрд╢рди array_unshift () рдФрд░ array_shift () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдкрд╣рд▓реЗ рд╕реНрдЯреИрдХ рддрддреНрд╡ рд╣рдореЗрд╢рд╛ рд╢реАрд░реНрд╖ рдкрд░ рд╣реЛрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рд╡рд░реНрдЯреЗрдХреНрд╕ рд╕реНрдЯреИрдХ рдХрд╛ nth рддрддреНрд╡ рд╣реЛрдЧрд╛ред рдЬреНрдпрд╛рджрд╛ рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИред рдЕрдм рд╣рдорд╛рд░реЗ рд╕реНрдЯреИрдХ рдореЗрдВ рдХреБрдЫ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВ:
<?php $myBooks = new ReadingList(); $myBooks->push('A Dream of Spring'); $myBooks->push('The Winds of Winter'); $myBooks->push('A Dance with Dragons'); $myBooks->push('A Feast for Crows'); $myBooks->push('A Storm of Swords'); $myBooks->push('A Clash of Kings'); $myBooks->push('A Game of Thrones');
рдЕрдм, рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рдЗрд╕рдореЗрдВ рд╕реЗ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВ:
<?php echo $myBooks->pop();
рдЕрдм рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рд╕реНрдЯреИрдХ рд╣реИ, рд╡рд╣ рд╕рдмрд╕реЗ рдКрдкрд░ рд╣реИред
<?php echo $myBooks->top();
рдпрджрд┐ рдЖрдк рдкреЙрдк () рд╡рд┐рдзрд┐ рдХреЛ рдлрд┐рд░ рд╕реЗ рдХреЙрд▓ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреИрдХ рд╕реЗ "рдП рдлреЗрд╕реНрдЯ рдлреЙрд░ рдХреЙрд╡реНрд╕" рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрджрд┐ рдЖрдк рдзрдХреНрдХрд╛ рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рддреБрд░рдВрдд рдкреЙрдк рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╕реНрдЯреИрдХ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рд╣рдорд╛рд░рд╛ рд╕реНрдЯреИрдХ "рдЕрдВрддрд┐рдо рд▓реЙрдЧ рдЗрди, рдкрд╣рд▓реЗ рд▓реЙрдЧ рдЗрди" рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдпрджрд┐ рд╣рдо рд╕реНрдЯреИрдХ рд╕реЗ рдЖрдЗрдЯрдо рдЦреАрдВрдЪрдирд╛ рдЬрд╛рд░реА рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдЬрд▓реНрджреА рдпрд╛ рдмрд╛рдж рдореЗрдВ рд╣рдореЗрдВ рдПрдХ рд╕рдВрджреЗрд╢ рдХреЗ рд╕рд╛рде рдПрдХ рдЕрдкрд╡рд╛рдж рдорд┐рд▓реЗрдЧрд╛ рдХрд┐ рд╕реНрдЯреИрдХ рдЦрд╛рд▓реА рд╣реИред
SPLStack
PHP (SPL Extension) рд╣рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ SplStack рднреА рд╢рд╛рдорд┐рд▓ рд╣реИ, рдЬреЛ рд╕рдВрд╕реНрдХрд░рдг 5.3 рд╕реЗ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рд╣рдо рдЕрдкрдиреА рд░реАрдбрд┐рдВрдЧрд▓рд┐рд╕реНрдЯ рдХреЛ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ:
<?php class ReadingList extends SplStack { }
SplStack рд╣рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХреБрдЫ рдЕрдзрд┐рдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ SplStack рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд╖рдорддрд╛ (рд╕реНрдЯреИрдХ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛) рдХреА рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИред
рдПрдХ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА, рдЬреЛ рдЕрдирд┐рд╡рд╛рд░реНрдп рд░реВрдк рд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╕рд╛рд░ рд╕рдВрд░рдЪрдирд╛ рд╣реИ, рдиреЛрдбреНрд╕ рдХреА рдПрдХ рд╕реВрдЪреА рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдЕрдЧрд▓реЗ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рдВрдХреЗрддрдХ рд╣реИред рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдЗрд╕ рддрд░рд╣ рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдкреНрд░рддреНрдпрдХреНрд╖ рдЧрдгрдирд╛ рдХреЗ рд╕рд╛рде:
рдПрдХ рджреЛрд╣рд░реА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рдиреЛрдб рдореЗрдВ рджреЛ рдмрд┐рдВрджреБ рд╣реЛрддреЗ рд╣реИрдВ - рд╕реВрдЪреА рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдФрд░ рдЕрдЧрд▓реЗ рдиреЛрдбреНрд╕ рдХреЗ рд▓рд┐рдПред рдпрд╣ рд╕рдВрд░рдЪрдирд╛ рдЖрдкрдХреЛ рджреЛ рджрд┐рд╢рд╛рдУрдВ рдореЗрдВ рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ, рд╣рдореЗрдВ рдпрд╣ рдЬрд╛рдирдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдкреВрд░реА рд╕реВрдЪреА рдХрд╣рд╛рдВ рд╕рдорд╛рдкреНрдд рд╣реЛрддреА рд╣реИ - рдЗрд╕рдХреЗ рд▓рд┐рдП рд╣рдо рдЕрдВрджрд░ рдкрд╛рд░ рдХрд┐рдП рдЧрдП рдмрд╣реБрдд рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рдмрд╛рд░реА
рддреЛ рд╣рдо "рдкрд╣рд▓реЗ рдЖрдП, рдкрд╣рд▓реЗ рдирд┐рдХрд▓реЗ" рдпрд╛ рдлреАрдлреЛ рдЖрдПред рдЬреЛ рдХреЛрдИ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд▓рд╛рдЗрди-рдЕрдк рдореЗрдВ рдЦрдбрд╝рд╛ рдерд╛, рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдЬрд┐рд╕рдиреЗ рдкрд╣рд▓реЗ рд╕реНрдерд╛рди рд▓рд┐рдпрд╛ рдерд╛ рд╡рд╣ рдкрд╣рд▓реЗ рдЫреЛрдбрд╝ рджреЗрдЧрд╛ред
рдПрдХ рдЕрдкрд╡рд╛рдж рд╡рд╣ рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рд╕рд┐рд░реНрдл рд╣рд╕реНрддрд╛рдХреНрд╖рд░ рдХрд░рддреЗ рд╣реИрдВ, рдкреВрдЫрддреЗ рд╣реИрдВ, рдЖрджрд┐редрдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдмреБрдирд┐рдпрд╛рджреА рдСрдкрд░реЗрд╢рди рд╣реИрдВ:
- init - рдПрдХ рдХрддрд╛рд░ рдмрдирд╛рдПрдБред
- enqueue - рдХрддрд╛рд░ рдХреЗ рдЕрдВрдд (рдкреВрдВрдЫ) рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВред
- dequeue - рдПрдХ рддрддреНрд╡ рдХреЛ рдХрддрд╛рд░ (рд╕рд┐рд░) рдХреА рд╢реБрд░реБрдЖрдд рд╕реЗ рд╣рдЯрд╛ рджреЗрдВред
- isEmpty - рдЦрд╛рд▓реАрдкрди рдХреЗ рд▓рд┐рдП рдХрддрд╛рд░ рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВред
PS рдЙрди рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдЬреЛ рдкреНрд░реЛрд▓реЙрдЧ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ - рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрдВрдЫ рдореЗрдВ рд╕реВрдЪреА рдХреЗ рд╕рднреА рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реИрдВ, рд╕рд┐рд╡рд╛рдп рд╕рд┐рд░ рдХреЗредPHP рд╣рдореЗрдВ SplQueue рд╡рд░реНрдЧ (рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА) рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реВрдЪреА рдХрд╛ рдкреНрд░рдореБрдЦ рдЕрдВрддрд┐рдо рддрддреНрд╡ рд╣реИред рд╣рдорд╛рд░реЗ рд░реАрдбрд┐рдВрдЧрд▓рд┐рд╕реНрдЯ рдХреЛ рдПрдХ рдХрддрд╛рд░ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
<?php class ReadingList extends SplQueue { } $myBooks = new ReadingList();
SplQueue SplDoublyLinkedList рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдПрдХ рд╕рд░рдгреА рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХреНрд╕реЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╕рд░рдгрд┐рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣рдорд╛рд░реА рдХрддрд╛рд░ рдФрд░ рдвреЗрд░ рддрдХ рдкрд╣реБрдВрдЪ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ:
<?php $myBooks[] = 'A Feast of Crows'; $myBooks[] = 'A Dance with Dragons';
рдХрддрд╛рд░ рд╕реЗ рдХреБрдЫ рддрддреНрд╡реЛрдВ рдХреЛ рд╣рдЯрд╛рдПрдВ:
<?php echo $myBooks->dequeue() . "\n";
enqueue () рдкреБрд╢ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рд╣реИ (), рд╣рд╛рд▓рд╛рдВрдХрд┐
dequeue () рдкреЙрдк рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рдирд╣реАрдВ рд╣реИ () ! рдХреНрдпреВ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдкреЙрдк () рдХрд╛ рдПрдХ рдЕрд▓рдЧ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдЧрд░ рд╣рдо рдкреЙрдк () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрддрд╛рд░ рдХреА рдкреВрдВрдЫ (рдП рдбрд╛рдВрд╕ рд╡рд┐рде рдбреНрд░реЗрдЧрди) рдХреЗ рддрддреНрд╡ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдХрддрд╛рд░ рдореЗрдВ рдореБрдЦреНрдп рдЪреАрдЬ рдлреАрдлреЛ рдирд┐рдпрдо рд╣реИред
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ (рдмрд┐рдирд╛ рдбрд┐рд▓реАрдЯ рдХрд┐рдП) рдХреМрди рд╕рд╛ рддрддреНрд╡ рдиреАрдЪреЗ () рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реВрдЪреА рдХрд╛ рдкреНрд░рдореБрдЦ рд╣реИ:
<?php echo $myBooks->bottom() . "\n";
рдкреЗрдбрд╝
ADT рдирд┐рдпрдВрддреНрд░рдг рдЖрдорддреМрд░ рдкрд░ 3 рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ: рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛, рд╕рдВрд░рдЪрдирд╛ рд╕реЗ рддрддреНрд╡ рдореВрд▓реНрдп рдХреЛ рд╣рдЯрд╛рдирд╛ рдФрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ред рд╕реНрдЯреИрдХ рдФрд░ рдХрддрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП, рдпреЗ рдСрдкрд░реЗрд╢рди рд╕реНрдерд┐рддрд┐ рдирд┐рд░реНрднрд░ (xIFO) рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдореВрд▓реНрдп рджреНрд╡рд╛рд░рд╛ рдЬрд╛рдирдХрд╛рд░реА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?
рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрд╕реА рдкреНрд▓реЗрдЯ рд╣реИ (рддрддреНрд╡реЛрдВ рдХрд╛ рдХреНрд░рдо рдорд╛рдпрдиреЗ рдирд╣реАрдВ рд░рдЦрддрд╛):

рдЬрд╛рд╣рд┐рд░ рд╣реИ, рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕реНрдЯреИрдХ рдпрд╛ рдХрддрд╛рд░ рд╣рдорд╛рд░реА рдорджрдж рдирд╣реАрдВ рдХрд░реЗрдЧреА, рдХреНрдпреЛрдВрдХрд┐ рд╣рдореЗрдВ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЛ рджрд░рдХрд┐рдирд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддреЛ рдпрд╣ рдЕрдВрдд рдореЗрдВ рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИ рдпрд╛ рдмрд┐рд▓реНрдХреБрд▓ рднреА рдЕрдиреБрдкрд╕реНрдерд┐рдд рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдк рдЬреЛ рдЖрдЗрдЯрдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рд╡рд╣ рд╕реВрдЪреА рдореЗрдВ рд╣реИред рдлрд┐рд░ рдЗрд╕рдХреА рдЦреЛрдЬ рдХреЗ рд▓рд┐рдП рд╣рдореЗрдВ рдФрд╕рдд, n / 2 рддрддреНрд╡реЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд╣рд╛рдБ n рдкреВрд░реА рд╕реВрдЪреА рдХреА рд▓рдВрдмрд╛рдИ рд╣реИред рдЕрдзрд┐рдХ рд╕реВрдЪреА - рдмрд╛рдИрдкрд╛рд╕ рдХреЗ рд▓рд┐рдП рдЕрдзрд┐рдХ рд╕рдордпред рдЗрд╕ рдЦреЛрдЬ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдХрд┐рд╕реА рддрд░рд╣ рдбреЗрдЯрд╛ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рд╕рдВрд░рдЪрдирд╛ рджреНрд╡рд╛рд░рд╛ рдЦреЛрдЬ рд╕рд░рд▓ рд╣реЛ рдЬрд╛рдПред рдФрд░ рдпрд╣рд╛рдВ рдкреЗрдбрд╝ рджрд┐рдЦрд╛рдИ рджреЗрддреЗ рд╣реИрдВред
рдЗрд╕ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдПрдХ рд╕рд╛рд░ рдЙрджрд╛рд╣рд░рдг рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рддрд╛рд▓рд┐рдХрд╛ рд╣реИ:
- create - рдПрдХ рдЦрд╛рд▓реА рдЯреЗрдмрд▓ рдмрдирд╛рдПрдВред
- рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░реЗрдВ - рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдЬреЛрдбрд╝реЗрдВред
- рд╣рдЯрд╛рдирд╛ - рддрд╛рд▓рд┐рдХрд╛ рд╕реЗ рдХреЛрдИ рдЖрдЗрдЯрдо рд╣рдЯрд╛рдирд╛ред
- рдкреБрдирдГ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ - рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдПрдХ рддрддреНрд╡ рдвреВрдВрдвреЗрдВред
рд╣рд╛рдВ, рдпрд╣ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдкреНрд░рд╕рд┐рджреНрдз
CRUD (рдХреНрд░рд┐рдПрдЯ рд░реАрдб рдЕрдкрдбреЗрдЯ рдбрд┐рд▓реАрдЯ) рдХреЗ рд╕рдорд╛рди рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдкреЗрдбрд╝ рдФрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдирд┐рдХрдЯрддрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИрдВред
рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд░реИрдЦрд┐рдХ рд╣реИ, рдЕрд░реНрдерд╛рдд рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдкрдВрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдХрд░реЗрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рд░рд┐рдХреЙрд░реНрдб рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЕрдиреБрдХреНрд░рдорд┐рдХ (рдпрд╛рдиреА, рд╕реАрдорд┐рдд рд▓рдВрдмрд╛рдИ рдпрд╛ рдЕрд▓рдЧ рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рд░рд┐рдХреЙрд░реНрдб, рд╕реАрдорд╛рдВрдХрдХ рдХреЗ рд╕рд╛рде) рдпрд╛ рд╕рдВрдмрдВрдзрд┐рдд (рдбреЗрдЯрд╛ рдХрд╛ рд╕рдВрдХреЗрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ)ред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдФрд░ рдлрд╝рд╛рдЗрд▓ рд╕рд┐рд╕реНрдЯрдо (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП FAT) рдХреЗ рд╕рд╛рде рдРрд╕рд╛ рд╣реА рдерд╛ред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рдПрдХ рдорд╛рдЗрдирд╕ рд╣реИ - рдпрд╣ рдбреЗрдЯрд╛ рдбрд╛рд▓рдиреЗ рдФрд░ рд╣рдЯрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЦрд░рд╛рдм рд╣реИ, рдЬрдмрдХрд┐ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЖрдкрдХреЛ рдирдП рдбреЗрдЯрд╛ рдХреЗ рд▓рд┐рдП рдЧрддрд┐рд╢реАрд▓ рд░реВрдк рд╕реЗ рд╕реНрдерд╛рди рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд▓рдВрдмрд╛рдИ рдХреЗ рд╕рд╛рде рдЕрдиреБрдХреНрд░рдорд┐рдХ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдо рдХреБрд╢рд▓ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдмрд╛рдЗрдирд░реА рд╕рд░реНрдЪ рдЯреНрд░реА рдХреЗ рд▓рд┐рдП, рд╕рдВрдмрдВрдзрд┐рдд рд░рд┐рдХреЙрд░реНрдб рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИред
рдкреЗрдбрд╝ рдЧреИрд░-рд░реЗрдЦреАрдп рдЦреЛрдЬ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рд╡реЗ рджреЛ рдкреНрд░рдХрд╛рд░ рдХреА рдЕрдзрд┐рдХ рдкреНрд░рднрд╛рд╡реА рдХреНрд╖рдорддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддреЗ рд╣реИрдВ - рдЕрдиреБрдХреНрд░рдорд┐рдХ рдФрд░ рдЬреБрдбрд╝реЗ рд╣реБрдП, рд╕рднреА рддрд╛рд▓рд┐рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рд▓рд┐рдП, рдХрдИ рдЖрдзреБрдирд┐рдХ рдбреЗрдЯрд╛рдмреЗрд╕ рдмрд┐рд▓реНрдХреБрд▓ рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ (MyISAM рдЗрдВрдбреЗрдХреНрд╕ рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ)ред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЗрд╕ рддрд╕реНрд╡реАрд░ рд╕реЗ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдкреЗрдбрд╝ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдорд┐рдд рд╕рдВрд░рдЪрдирд╛ рд╣реИ рдЬрд╣рд╛рдВ рдПрдХ рдорд╛рддрд╛-рдкрд┐рддрд╛ тЖТ рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдмрд╛рд▓ рд╕рдВрдмрдВрдз рд╣реИред рд╡рдВрд╢ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рдиреЛрдб рдПрдХ рдЕрдВрдд рдиреЛрдб (рдкрддреНрддреА) рд╣реИ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╡рдВрд╢рдЬ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╣реИ, рдиреЛрдбреНрд╕ рдХреЗ рдмреАрдЪ рдХрдиреЗрдХреНрд╢рди рдХрд┐рдирд╛рд░реЛрдВ рд╣реИрдВред рджреЛ рд╡рдВрд╢реЛрдВ рдХреЗ рд╕рд╛рде рдПрдХ рдиреЛрдб рд╕рдмрд╕реЗ рд╕рд░рд▓ рдкреЗрдбрд╝ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдЗрд╕ рддрд░рд╣ рдХреЗ рдиреЛрдбреНрд╕ рдХреА рдкреБрдирд░рд╛рд╡рд░реНрддреА рд╕реВрдЪреА рдХреЗ рд░реВрдк рдореЗрдВ рдкреЗрдбрд╝ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рдЗрд╕рдХреА рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рдкреЗрдбрд╝ рдПрдХ рдбрдмрд▓ рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдкреЗрдбрд╝ рдХрд╛ рд╡рд░реНрдгрди рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
<?php class BinaryNode { public $value;
рдирдП рдорд╛рди рдбрд╛рд▓реЗрдВ
рдирдП рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рдирд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдмрд╣реБрдд рдЕрдзрд┐рдХ рд░реЛрдЪрдХ рд╡рд┐рд╖рдп рд╣реИред рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдХрдИ рд╕рдорд╛рдзрд╛рди рд╣реИрдВ, рдЬреЛ рдкреЗрдбрд╝ рдХреЗ рд░реЛрдЯреЗрд╢рди рдФрд░ рд╕рдВрддреБрд▓рди рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╣реИ, рдФрд░ рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреЗрдбрд╝ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ рд▓рд╛рд▓-рдХрд╛рд▓реЗ, рдПрд╡реАрдПрд▓ рдпрд╛ рдмреА рдкреЗрдбрд╝, рдЬреЛ рдкреЗрдбрд╝ рдХреЛ рдбрд╛рд▓рдиреЗ, рд╣рдЯрд╛рдиреЗ рдФрд░ рдЯреНрд░реИрд╡рд░реНрд╕ рдХрд░рдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкреНрд░рджрд░реНрд╢рди рд╕рдВрдХреЗрддрдХ рд╣реИрдВред
рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕рдмрд╕реЗ рд╕рд░рд▓ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдХреБрдЫ рдирд┐рдпрдореЛрдВ рдХреЛ рдирд┐рд░реВрдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВ: рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рд╕реЗ рдХрдо рд╕рдм рдХреБрдЫ рдмрд╛рдИрдВ рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЕрдзрд┐рдХ - рджрд╛рдИрдВ рдУрд░ред
рджреЛрд╣рд░рд╛рдП рдЬрд╛рдиреЗ рд╕реЗ рдмрд╛рд╣рд░ рд░рдЦрд╛ рдЬрд╛рдПрдЧрд╛:
- рдпрджрд┐ рдкреЗрдбрд╝ рдЦрд╛рд▓реА рд╣реИ, рддреЛ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рдХреЗ рд░реВрдк рдореЗрдВ [new_node] рдбрд╛рд▓реЗрдВ (рдЬрд╛рд╣рд┐рд░ рд╣реИ!)
- рдЕрд▓рд╡рд┐рджрд╛ (рдкреЗрдбрд╝ рдЦрд╛рд▓реА рдирд╣реАрдВ рд╣реИ):
- 2 рдПред рдпрджрд┐ ([рд╡рд░реНрддрдорд╛рди рдиреЛрдб] рдЦрд╛рд▓реА рд╣реИ) - рдпрд╣рд╛рдВ рдкреЗрд╕реНрдЯ рдХрд░реЗрдВ рдФрд░ рд░реЛрдХреЗрдВ;
- 2 рдмреАред рдЕрдЧрд░ ([new_node]> [рдХрд░рдВрдЯ рдиреЛрдб]) - рджрд╛рдИрдВ рдУрд░ рдмрд╛рд░-рдмрд╛рд░ [new_node] рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдЪрд░рдг 2 рджреЛрд╣рд░рд╛рдПрдВ
- 2cред рдпрджрд┐ ([new_node] <[рдХрд░рдВрдЯ рдиреЛрдб]) - рдмрд╛рдИрдВ рдУрд░ [new_node] рдбрд╛рд▓рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдФрд░ рдЪрд░рдг 2 рдХреЛ рджреЛрд╣рд░рд╛рдПрдВ
- 2 рдбреАред рдЕрдиреНрдпрдерд╛, рдореВрд▓реНрдп рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреЗрдбрд╝ рдореЗрдВ рд╣реИ
<?php class BinaryTree { ... public function insert($item) { $node = new BinaryNode($item); if ($this->isEmpty()) {
рдиреЛрдбреНрд╕ рдХреЛ рд╣рдЯрд╛рдирд╛ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рдХрд╣рд╛рдиреА рд╣реИ рдФрд░ рдкреНрд░рднрд╛рд╡рд┐рдд рдирд╣реАрдВ рд╣реЛрдЧреАред рд╢рд╛рдпрдж рдХреБрдЫ рдФрд░ рд╕рдордпред
рдкреЗрдбрд╝ рдХреА рдЯрд╣рдиреА
рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ рд╣рдордиреЗ рд░реВрдЯ рд╕реЗ рдХреИрд╕реЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛ рдФрд░ рдПрдХ рдЦрд╛рд▓реА рдиреЛрдб рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдиреЛрдб рдХреЗ рдмрд╛рдж рдПрдХ рдкреЗрдбрд╝, рдиреЛрдб рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рд╛ рдЧрдпрд╛ред 4 рдореБрдЦреНрдп рдкреЗрдбрд╝ рдЯреНрд░реИрд╡рд░реНрд╕рд▓ рд░рдгрдиреАрддрд┐рдпрд╛рдБ рд╣реИрдВ:
- рдкреНрд░реА-рдСрд░реНрдбрд░ (рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢) - рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдФрд░ рдлрд┐рд░ рдмрд╛рдИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдмрдврд╝рдирд╛ред
- рдЗрди-рдСрд░реНрдбрд░ (рд╕рдордорд┐рдд) - рдкрд╣рд▓реЗ рдмрд╛рдИрдВ рдУрд░ рд╕реЗ рдЧреБрдЬрд░реЗрдВ, рд╡рд░реНрддрдорд╛рди рдиреЛрдб рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХрд░реЗрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рд╕реЗ рдмрд╛рдпрдкрд╛рд╕ рдХрд░реЗрдВред
- рдкреЛрд╕реНрдЯ-рдСрд░реНрдбрд░ - рдмрд╛рдПрдВ рдФрд░ рджрд╛рдПрдВ рдкрдХреНрд╖реЛрдВ рдХреЛ рдЙрд▓реНрдЯрд╛ рдХрд░реЗрдВ, рдлрд┐рд░ рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░реЗрдВред
- рд╕реНрддрд░-рдХреНрд░рдо (рд╡рд┐рд╕реНрддреГрдд) - рд╡рд░реНрддрдорд╛рди рдореВрд▓реНрдп рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛, рдлрд┐рд░ рд╡рдВрд╢рдЬреЛрдВ рдХреЛ рд╕рдВрд╕рд╛рдзрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЕрдЧрд▓реЗ рд╕реНрддрд░ рддрдХ рд▓реЗ рдЬрд╛рдирд╛ред
рдкрд╣рд▓реЗ рддреАрди рд░рдгрдиреАрддрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдЧрд╣рд░реА рд╕реИрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ рдЬреЛ рдкреЗрдбрд╝ рдХреА рдЬрдбрд╝ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдпрд╛ рдПрдХ рдиреЛрдб рдХреЗ рд░реВрдк рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдиреЛрдб) рдФрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ, рдкреЗрдбрд╝ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдЧрд╣рд░рд╛ рдЧреБрдЬрд░рддрд╛ рд╣реИред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкреНрд░рддреНрдпрдХреНрд╖ рдЖрджреЗрд╢, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдирдП рдиреЛрдбреНрд╕ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ) рдХреЛ рд╕рдореНрдорд┐рд▓рд┐рдд рдХрд░рддреЗ рд╕рдордп рдпрд╛ рдПрдХ рд╕рдмрдЯреНрд░реА рдХреА рдирдХрд▓ рдХрд░рддреЗ рд╕рдордп, рд░рд┐рд╡рд░реНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ - рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬрдм рдПрдХ рдкреЗрдбрд╝ рд╕реЗ рдиреЛрдб рдХреЛ рд╣рдЯрд╛рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдПрдХ рд╕рдордорд┐рдд рдорд╛рд░реНрдЧ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЖрдкрдХреЛ рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдереЛрдбрд╝рд╛ рд╕рдВрд╢реЛрдзрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
<?php class BinaryNode { ...
рдирд┐рд╖реНрдХрд░реНрд╖
рдореИрдВ рд╣рд░ рдХрд┐рд╕реА рдХреЛ рдзрдиреНрдпрд╡рд╛рдж рджреЗрддрд╛ рд╣реВрдВ рдЬреЛ рдирд┐рд╖реНрдХрд░реНрд╖ рдкрд░ рдкрдврд╝рддрд╛ рд╣реИ, рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рдкрд╛рда рдФрд░ рдЪрд┐рддреНрд░ :)
рдпрд╣ рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐
SplStack ,
SplQueue, рдФрд░
рджреЛрдЧреБрдиреА рдЬреБрдбрд╝реА рд╕реВрдЪреА рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдХрд╡рд░ рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рд╣реИрдВред рдЙрдирдХреЗ рд▓рд┐рдП PHP рдбреЙрдХреНрдпреВрдореЗрдВрдЯ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реАрдХреЗ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рддрддреНрд╡реЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рдЧрд┐рдирдирд╛ рдпрд╛ рдЗрдЯреНрд░реЗрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрд░рдЪрдирд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╢рд╛рдорд┐рд▓ рд╣реИред
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛
kpuzuc рдХреЗ рдЗрд╕ рд▓реЗрдЦ рдкрд░ рдзреНрдпрд╛рди рджреЗрдиреЗ
рдпреЛрдЧреНрдп рд╣реИрдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХрд╛ рд╡рд┐рдЬрд╝реБрдЕрд▓рд╛рдЗрдЬрд╝реЗрд╢рди, рд▓рд┐рдВрдХ рдЬрд┐рдиреНрд╣реЗрдВ
рдЯреЗрдВрдЧреНрд░реЛ рд╕реЗ рдПрдХ
рдкреЛрд╕реНрдЯ рдореЗрдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ
рдпрд╣рд╛рдБ рд╕реЗ рдХреЙрдкреА рдХрд┐рдП
рдЧрдП рдЗрди рд╕рдВрд░рдЪрдирд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдкреНрд░рджрд░реНрд╢рди рдХреЗ рдмреЗрдВрдЪрдорд╛рд░реНрдХ
рдХрддрд╛рд░ рдХреЗ рд▓рд┐рдП, рдПрд╕рдкреАрдПрд▓ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЪреБрдирд╛рд╡ рдмрд╣реБрдд рд╕реНрдкрд╖реНрдЯ рд╣реИред рд╕реНрдЯреИрдХ рдХрд╛ рдХреНрд░рд┐рдпрд╛рдиреНрд╡рдпрди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рд░рдгреА рдХреЛ рдмреЗрд╣рддрд░ рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рджреЛрдЧреБрдиреА рд▓рд┐рдВрдХ рдХреА рдЧрдИ рд╕реВрдЪреА рдкреНрд░рддреНрдпреЗрдХ рд╕реЗрдХрдВрдб рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреА рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╕рд░рдгрд┐рдпреЛрдВ рд╕реЗ рд╣рд╛рд░ рдЬрд╛рддреА рд╣реИред рдИрдорд╛рдирджрд╛рд░ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рддрд▓реНрд▓реАрди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдФрд░ рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдпрд╣ рдХрд┐рд╕рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рддрдереНрдп рдХреЗ рд╕рд╛рде рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ "рдЖрд╕рдиреНрди" рдЗрдВрдЯрд░рдлреЗрд╕ рд╕реЗ рдмрд╣реБрдд рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░рд┐рдд рд╣реЛрддрд╛ рд╣реИ, рд╕рд╣реА рд╣реИ рдЕрдЧрд░ рдореИрдВ рдЧрд▓рдд рд╣реВрдВред
рдкреАрдПрд╕ рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣ рдореВрд▓ рдХреЗ рдкрд╛рда рдФрд░ рдЕрдиреБрд╡рд╛рдж рдореЗрдВ рдкреАрдПрдо рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред