рд╢реБрдн рджрд┐рди, рдкрд╛рдардХред рд╢рд╛рдпрдж рдЖрдкрдиреЗ рдкрд╣рд▓реЗ рд╣реА рдореЗрд░реЗ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдкрдврд╝ рд▓рд┐рдП рд╣реИрдВ, рдФрд░ рдЖрдк рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдореИрдВ рдЕрдкрдирд╛ рдУрдПрд╕ рд▓рд┐рдЦ рд░рд╣рд╛ рд╣реВрдВред рдЖрдЬ рд╣рдо рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рдФрд░ рдореЗрдореЛрд░реА рдХреЗ рдкреНрд░рдмрдВрдзрди рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд░рд▓ рдФрд░ рдХрд╛рдлреА рддреЗрдЬрд╝ рдПрд▓реНрдЧреЛрд░рд┐рдердо рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ - рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрд░ рдУрдПрд╕ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдореЗрдореЛрд░реА рдХреЗ рд╕рд╛рде рддреЗрдЬ, рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдФрд░ рдЧреИрд░-рдмреЗрдХрд╛рд░ рдХрд╛рдо рдПрдХ рдЕрдЪреНрдЫреЗ рдУрдПрд╕ рдХреА рдХреБрдВрдЬреА рд╣реИред
рдореИрдВ рд░рдирд░реЗрдЯ рдФрд░ рдЕрдВрдЧреНрд░реЗрдЬреА-рднрд╛рд╖рд╛ рджреЛрдиреЛрдВ рд╕рд╛рдЗрдЯреЛрдВ рдкрд░ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рд╕рд░рд▓ рдФрд░ рдкрд░реНрдпрд╛рдкреНрдд рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ рдерд╛ - рдореБрдЭреЗ рдЕрднреА рднреА рдПрдХ рдУ (рдПрди) рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреЛрдИ рдкрд░реНрдпрд╛рдкреНрдд рд▓реЗрдЦ рдирд╣реАрдВ рдорд┐рд▓рд╛ред рдЦреИрд░, рдЖрдЬ рд╣рдо рдПрдХ рд╕реНрдореГрддрд┐ рдкреНрд░рдмрдВрдзрдХ рдХреЗ рд▓рд┐рдП рдПрдХ рдмреЗрд╣рддрд░ рд╡рд┐рдЪрд╛рд░ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ, рдореИрдВрдиреЗ рдмрд┐рд▓реНрд▓реА рдХреЗ рдиреАрдЪреЗ рдирд┐рд░рдВрддрд░рддрд╛ рд░рдЦреАред
рд╕рд┐рджреНрдзрд╛рдВрдд
рд╡рд┐рдХреА рд╕реЗ: рдореЗрдореЛрд░реА рдореИрдиреЗрдЬрд░ - рдПрдХ рдХрдВрдкреНрдпреВрдЯрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо (рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдФрд░ рдСрдкрд░реЗрдЯрд┐рдВрдЧ рд╕рд┐рд╕реНрдЯрдо рджреЛрдиреЛрдВ) рдХрд╛ рдПрдХ рд╣рд┐рд╕реНрд╕рд╛ рдЬреЛ рдкреНрд░реЛрд╕реЗрд╕рд░ рдХреЗ рдПрдбреНрд░реЗрд╕ рд╕реНрдкреЗрд╕ рдореЗрдВ рджрд┐рдП рдЧрдП рдореЗрдореЛрд░реА рдПрд░рд┐рдпрд╛ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд░реИрдо рдХреЗ рдЖрд╡рдВрдЯрди рдФрд░ рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рдпрд╛ (рдХреБрдЫ рдХрдВрдкреНрдпреВрдЯрд░ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдХреЗ рд▓рд┐рдП) рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред
рдореИрдВ
рдЗрд╕ рд▓реЗрдЦ рдХреЛ рдкрдврд╝рдирд╛ рдЬрд╛рд░реА рд░рдЦрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕реБрдЭрд╛рд╡ рднреА рджреЗрддрд╛ рд╣реВрдВред
рд╡рд╛рдЯрд░рдорд╛рд░реНрдХ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛
рдареАрдХ рд╣реИ, рд╢рд╛рдпрдж рд╕рднреА рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡реЙрдЯрд░рдорд╛рд░реНрдХ рдПрд▓реЛрдХреЗрдЯрд░ рд╣реИред рдЗрд╕рдХрд╛ рд╕рд╛рд░ рд▓рдЧрднрдЧ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╣реИ: рдкреВрд░реА рдореЗрдореЛрд░реА рдХреЛ рдмреНрд▓реЙрдХ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмреНрд▓реЙрдХ рдореЗрдВ рдПрдХ рд╣реЗрдбрд░ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдпрд╣ рдФрд░ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рдЖрдХрд╛рд░ рд╣реИ, рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ (рд╡реНрдпрд╕реНрдд / рдореБрдХреНрдд), рдмреНрд▓реЙрдХ рдХреЗ рдкрддреЗ рдХреЛ рдЬрд╛рдирдХрд░, рд╣рдо O (1) рдХреЗ рд▓рд┐рдП рдЕрдЧрд▓реЗ рдФрд░ рдкрд┐рдЫрд▓реЗ рдмреНрд▓реЙрдХ рдХрд╛ рдкрддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрди
рдореЗрдореЛрд░реА рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдПрдХ рдмреНрд▓реЙрдХ рдХреА рддрд▓рд╛рд╢ рдХрд░реЗрдВ рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рдЖрд╡рдВрдЯрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдореЗрдореЛрд░реА рдХреЗ рдЖрдХрд╛рд░ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдмрд░рд╛рдмрд░ рд╣реИред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдкрд╣рд▓реЗ рд╣реА рд╕рдордЭ рдЪреБрдХреЗ рд╣реИрдВ, O (N) рдХрд╛ рд╕реНрдкрд░реНрд╢реЛрдиреНрдореБрдЦ рд╡реНрдпрд╡рд╣рд╛рд░ рдмреБрд░рд╛ рд╣реИред
рдореЗрдореЛрд░реА рд░рд┐рд▓реАрдЬрд╝
рдореЗрдореЛрд░реА рдХреЛ рдлреНрд░реА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдмреНрд▓реЙрдХ рдХреА рд╕реНрдерд┐рддрд┐ рдХреЛ "рдлреНрд░реА" рдХреЗ рд░реВрдк рдореЗрдВ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ - рдУ (1) - рд╕реБрдкрд░!
рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЫреЗрдж рдмрдирдирд╛ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдореЗрдВ 2 рдпрд╛ рдЕрдзрд┐рдХ рдореБрдХреНрдд рдмреНрд▓реЙрдХ рдбреАрдлрд╝реНрд░реИрдЧреНрдореЗрдиреНрдЯ рд╣реЛрддреЗ рд╣реИрдВ, рдЬрдм рд░рд┐рд▓реАрдЬрд╝ рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдкрдбрд╝реЛрд╕реА рдмреНрд▓реЙрдХ рджреЗрдЦреЗ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдпрджрд┐ рдПрдХ рдпрд╛ рджреЛ рдореБрдХреНрдд рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдореЗрдВ рдорд░реНрдЬ рдХрд░реЗрдВред
рд▓реЙрдЧрд░рд┐рджрдорд┐рдХ рдПрд▓реЛрдХреЗрдЯрд░
рд╣рдо рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рдореБрдлреНрдд рдмреНрд▓реЙрдХ рдХреЗ рдмреАрдЪ рд╣реА рдЦреЛрдЬ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдХреЗрд╡рд▓ рдореБрдлреНрдд рдореЗрдВ рдЪрд▓рдиреЗ рд╕реЗ рдФрд╕рддрди рджреЛ рдмрд╛рд░ рдЧрддрд┐ рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдПрдХ рд░реЗрдЦрд╛ рд╣реИред рдЦреИрд░, рд╣рдореЗрдВ рд╕рднреА рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреНрдпреЛрдВ рдЪрд▓рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЖрдХрд╛рд░ рдХреА рддрд▓рд╛рд╢ рдореЗрдВ, рдЕрдЧрд░ рд╣рдо рдореБрдлреНрдд рдмреНрд▓реЙрдХреЛрдВ рд╕реЗ рдПрдХ рдкреЗрдбрд╝ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ! рдкреНрд░рд╛рд░рдВрдн рдореЗрдВ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЗрд╡рд▓ рдПрдХ рдореБрдХреНрдд рдмреНрд▓реЙрдХ рд╣реИ, рдФрд░ рдлрд┐рд░ рд╣рдо рдмрд╛рдЗрдирд░реА рдЦреЛрдЬ рдЯреНрд░реА рдореЗрдВ рдореБрдлреНрдд рдмреНрд▓реЙрдХ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ, рдХреБрдВрдЬреА рдмреНрд▓реЙрдХ рдЖрдХрд╛рд░ рд╣реЛрдЧреАред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╕реНрдореГрддрд┐ рдХреЛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдПрдХ рдкреЗрдбрд╝ рдореЗрдВ рдПрдХ рдмреНрд▓реЙрдХ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдЖрдХрд╛рд░ рд╣рдорд╛рд░реА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╕реЗ рдЕрдзрд┐рдХ рдпрд╛ рдЙрд╕рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИред рд╣рдо рдЪреБрдкрдЪрд╛рдк рдУ (рд▓реЙрдЧ рдПрди) рдХреЗ рд▓рд┐рдП рдРрд╕рд╛ рдХрд░рддреЗ рд╣реИрдВ, рдмрд╕ рдкреЗрдбрд╝ рдХреЗ рдиреАрдЪреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рд╣рдо рдпрд╛ рддреЛ рдмреНрд▓реЙрдХ рдХреЛ рджреЛ рдореЗрдВ рдХрд╛рдЯрддреЗ рд╣реИрдВ, рдпрд╛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЗрд╕реЗ рдЙрд╕реА рдХреЛ рджреЗрддреЗ рд╣реИрдВ рдЬрд┐рд╕рдиреЗ рдореЗрдореЛрд░реА рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдерд╛ред рдЕрдЧрд▓рд╛, рд╣рдо O (1) рдХреЗ рд▓рд┐рдП рдкреЗрдбрд╝ рд╕реЗ рдмреНрд▓реЙрдХ рдирд┐рдХрд╛рд▓рддреЗ рд╣реИрдВред рдФрд░, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ O (рд▓реЙрдЧ рдПрди) рдХреЗ рдкреАрдЫреЗ рдХреЗ рдмрд╛рдХреА рдмреНрд▓реЙрдХ рдХреЛ рдбрд╛рд▓реЗрдВред рд░рд┐рд▓реАрдЬ рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдмрд╕ рдмреНрд▓реЙрдХ рд╡рд╛рдкрд╕ рдбрд╛рд▓рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рд╡рд┐рдЦрдВрдбрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдордд рднреВрд▓рдирд╛ред
рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдкреЗрдбрд╝ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЖрдкрдХреЛ рд╕реНрд╡-рд╕рдВрддреБрд▓рди рд╡рд╛рд▓реЗ рдкреЗрдбрд╝, рд░реЗрдб-рдмреНрд▓реИрдХ рдпрд╛ рдПрд╡реАрдПрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдЖрдк рдПрдХ рд╕реНрдерд┐рд░ рд╕рд░рдгреА рдореЗрдВ рдмреНрд▓реЙрдХ рдЯреНрд░реА рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕реЗ рдЕрд▓рдЧ рддрд░реАрдХреЗ рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдХреЛрдб:
char * malloc(size_t size) { if (!size) { return 0; } char * addr = 0; int i; for (i = 0; i < allocationAvlTree.size; ) { int r; node_t *n; n = &allocationAvlTree.nodes[i]; if (!n->key) { return NULL; } r = allocationAvlTree.cmp(n->key, size); if (r <= 0) {
рдЧреБрдб рд▓рдХ рдФрд░ рдПрдерд┐рдХрд▓ рд╣реИрдХрд┐рдВрдЧ! рдХрд┐рд╕реА рднреА рдЙрджреНрджреЗрд╢реНрдп рдХреА рдЖрд▓реЛрдЪрдирд╛ рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИ, рд▓реЗрдЦ рдХрд╛ рдЙрджреНрджреЗрд╢реНрдп рдпрд╣ рдирд╣реАрдВ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдмрд╕ рдПрдХ рдРрд╕реЗ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рд╕рд░рд▓ рдЖрд╡рдВрдЯрдирдХрд░реНрддрд╛рдУрдВ рдХреЗ рдЧреВрдВрдЧреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред