ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΠ‘ Windows
ΠΠ±ΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠ΅ΡΠ²ΡΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π½ΠΈΠΌ. Π‘ΠΌ. ΠΏΡΠ½ΠΊΡ 2.1 ΠΠ»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° — ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ. Π‘ΠΌ. ΠΏΡΠ½ΠΊΡ 2.2 ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΡΡΠΈ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎ Π½Π΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΠΌΡΡΠ»: ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΠ‘ Windows (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠΈΠ½ΠΈΡΡΠ΅ΡΡΡΠ²ΠΎ ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ ΠΈ Π½Π°ΡΠΊΠΈ Π£ΠΊΡΠ°ΠΈΠ½Ρ Π₯Π°ΡΡΠΊΠΎΠ²ΡΠΊΠΈΠΉ Π½Π°ΡΠΈΠΎΠ½Π°Π»ΡΠ½ΡΠΉ ΡΠ½ΠΈΠ²Π΅ΡΡΠΈΡΠ΅Ρ ΠΈΠΌ. Π. Π. ΠΠ°ΡΠ°Π·ΠΈΠ½Π° Π€Π°ΠΊΡΠ»ΡΡΠ΅Ρ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΡ Π½Π°ΡΠΊ ΠΠ°ΡΠ΅Π΄ΡΠ° ΠΈΡΠΊΡΡΡΡΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅Π»Π»Π΅ΠΊΡΠ° ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΡΡΡΠΎΠ²ΠΎΠΉ ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π΅ Π‘ΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ Π’Π΅ΠΌΠ°:
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΠ‘ Windows
ΠΡΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Ρ: ΡΡΡΠ΄Π΅Π½ΡΠΊΠ° Π³Ρ. ΠΠ‘-31
Π.Π. ΠΡΠ½ΠΈΠ½Π° Π ΡΠΊΠΎΠ²ΠΎΠ΄ΠΈΡΠ΅Π»Ρ: ΡΡ. ΠΏΡΠ΅ΠΏΠΎΠ΄Π°Π²Π°ΡΠ΅Π»Ρ Π. Π. ΠΠΎΡΠ±Π°Π½Ρ Π₯Π°ΡΡΠΊΠΎΠ² 2012
Π‘ΠΠΠΠ ΠΠΠΠΠ ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1. ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ
1.1 ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ
1.2 ΠΠ±ΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ
2. ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°
2.1 Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°
2.2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΠ‘ Windows ΠΈ ΠΈΡ ΡΠΎΠ»Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅
2.3 Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
2.4 ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
2.5 ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ²8
ΠΡΠ²ΠΎΠ΄Ρ ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΈ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π. ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΠ ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π. ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠΠΠΠΠΠΠ
ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Π² ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π, ΠΌΠΎΠΆΠ½ΠΎ ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠ΄ ΡΠ΅Π»Π΅ΠΉ ΠΈ Π·Π°Π΄Π°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΠΈΡΠ°Π½Ρ Π½ΠΈΠΆΠ΅.
Π¦Π΅Π»ΠΈ:
— ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ, ΠΊΠ°ΠΊ ΠΊΡΡΠ° (ΠΏΡΠ» ΠΏΠ°ΠΌΡΡΠΈ), ΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²;
— ΠΏΡΠΈΠΎΠ±ΡΠ΅ΡΡΠΈ Π½Π°Π²ΡΠΊΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΡΡΠ³ Π΄ΡΡΠ³ΠΎΠΌ.
ΠΠ°Π΄Π°ΡΠΈ:
— Π½Π°ΠΉΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΡΡ ΡΠΏΡΠ°Π²ΠΎΡΠ½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΡΠ²ΡΠ·Π½ΡΡ ΡΠΏΠΈΡΠΊΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΠ‘ Windows;
— ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ Π΅Π³ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ;
— Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 5-ΡΡ ΠΏΠΎΡΠΎΠΊΠ°ΠΌΠΈ: ΠΏΠ΅ΡΠ²ΡΠΉ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΊΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ, Π²ΡΠΎΡΠΎΠΉ ΠΈ ΡΡΠ΅ΡΠΈΠΉ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΡΠ΄Π°Π»ΡΠ΅Ρ ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ, ΠΏΡΡΡΠΉ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½;
— ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΡΡΠ³ Π΄ΡΡΠ³ΠΎΠΌ;
— ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ΄ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π‘Π²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ — ΡΡΡΡΠΊΡΡΡΠ° Π΄Π°Π½Π½ΡΡ , ΡΠΎΡΡΠΎΡΡΠ°Ρ ΠΈΠ· ΡΠ·Π»ΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΠ°ΠΊ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅, ΡΠ°ΠΊ ΠΈ ΠΎΠ΄Π½Ρ ΠΈΠ»ΠΈ Π΄Π²Π΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΠΈ/ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠ·Π΅Π» ΡΠΏΠΈΡΠΊΠ°. Cormen, Leiserson, Rivest, and Stein. Introduction to Algorithms, 2nd edition. The MIT Press, 2001 ΠΠΎΠ»ΡΡΠ΅Π²ΠΎΠΉ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ, ΠΊΡΠΎΠΌΠ΅ Π΄Π°Π½Π½ΡΡ , ΡΡΡΠ»ΠΊΡ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ, ΠΏΡΠΈ ΡΡΠΎΠΌ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΡΠ»Π°Π΅ΡΡΡ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ (ΠΎΠ±ΡΠ°Π·ΡΡ, ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΏΠΎΠ΄ΠΎΠ±ΠΈΠ΅ ΠΊΠΎΠ»ΡΡΠ°). ΠΡΠΈΠ½ΡΠΈΠΏΠΈΠ°Π»ΡΠ½ΡΠΌ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠ½Π°Ρ Π³ΠΈΠ±ΠΊΠΎΡΡΡ: ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° ΠΌΠΎΠΆΠ΅Ρ Π½Π΅ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠΌ ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π΄Π°Π½Π½ΡΡ Π² ΠΏΠ°ΠΌΡΡΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°, Π° ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΎΠ±Ρ ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π²ΡΠ΅Π³Π΄Π° ΡΠ²Π½ΠΎ Π·Π°Π΄Π°ΡΡΡΡ Π΅Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠΌΠΈ ΡΠ²ΡΠ·ΡΠΌΠΈ. http://ru.wikipedia.org/wiki/Π‘Π²ΡΠ·Π½ΡΠΉ_ΡΠΏΠΈΡΠΎΠΊ, Π Π²ΠΎΡ ΡΠ΄Π°Π»ΡΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ° ΠΊΡΠ΄Π° ΡΡΡΠ΄Π½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΡΡΠΌΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΏΠΎΠΈΡΠΊΠΎΠΌ, Π½Π΅Π»ΡΠ·Ρ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π°ΠΏΡΡΠΌΡΡ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΡ. ΠΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡΠ½Π΅ΡΡΠΈ ΠΊ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΊΠ°ΠΌ ΡΠ°ΠΊΠΎΠΉ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ .
ΠΡΠ» ΠΏΠ°ΠΌΡΡΠΈ (ΠΊΡΡΠ°) — ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠΌ ΠΎΠ±Π»Π°ΡΡΡ Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΠ°Ρ ΠΈΠΌ Π΄Π»Ρ Π·Π°Ρ Π²Π°ΡΠ° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ, ΡΠ°Π·ΠΌΠ΅Ρ ΠΊΠΎΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ΅Π½ΡΡΠ΅ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π²ΠΈΡΡΡΠ°Π»ΡΠ½ΠΎΠΉ ΡΡΡΠ°Π½ΠΈΡΡ. ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΡΡΠ΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ «ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ». ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ
Π‘ΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎΠ±Ρ Π² ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΊ ΠΎΠ±ΡΠ΅ΠΌΡ Π΄Π»Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΡΠ΅ΡΡΡΡΡ ΠΈΠΌΠ΅Π» Π΄ΠΎΡΡΡΠΏ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ . ΠΡΠΎ ΠΎΡΠ΅Π½Ρ Π²Π°ΠΆΠ½Π°Ρ Π·Π°Π΄Π°ΡΠ° ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΉ Π΄ΠΎΡΡΡΠΏ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΡΠΌ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊ ΠΏΠΎΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΡΡ .
ΠΡΡΠ΅Ρ ΠΏΠΎ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠ°Π·Π΄Π΅Π»ΠΎΠ². Π ΡΠ°Π·Π΄Π΅Π»Π΅ «ΠΠ½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ» ΠΎΡΡΠ°ΠΆΠ΅Π½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½Π½Π°Ρ ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ Π΅Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π² ΠΎΠ±ΡΠ΅ΠΌ). Π Π°Π·Π΄Π΅Π» «ΠΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ» ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠΈΠ·ΠΈΡΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΠ΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ, ΡΠ²ΠΈΠ΄Π΅ΡΠ΅Π»ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΎ Π΅Π΅ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅. Π «ΠΡΠ²ΠΎΠ΄Π°Ρ » ΡΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²Π°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠ΅Π»ΠΈ, ΠΊΠΎΡΠΎΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΠ ΡΠ΄Π°Π»ΠΎΡΡ Π΄ΠΎΡΡΠΈΡΡ. Π’Π°ΠΊΠΆΠ΅ Π΄Π°Π½Π½ΡΠΉ ΠΎΡΡΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π½ΡΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠΎΠ² ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΈ 2 ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ: ΡΠΎΡΠΌΡΠ»ΠΈΡΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Π½ΠΈΡ ΠΈ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ.
1. ΠΠΠΠΠΠ’ΠΠ§ΠΠ‘ΠΠΠ ΠΠΠΠΠ
1.1 ΠΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°ΡΠΈ Π Π΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡΠ½ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΠ»Π° ΡΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½Π½Π°Ρ Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΠ‘ Windows, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°Π»Π° Π±Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. ΠΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΡΠ²Π΅ΡΠ°ΡΡ 5 ΠΏΠΎΡΠΎΠΊΠΎΠ²:
— Π³Π»Π°Π²Π½ΡΠΉ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡ;
— ΠΏΠΎΡΠΎΠΊ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ;
— ΠΏΠΎΡΠΎΠΊ, ΡΠ΄Π°Π»ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°;
— ΠΏΠΎΡΠΎΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ;
— ΠΏΠΎΡΠΎΠΊ, ΡΠΈΡΠ°ΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ° (Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠΊΡΠ°Π½).
1.2 ΠΠ±ΡΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΠ΅ΡΠ²ΡΠΌ ΡΡΠ°ΠΏΠΎΠΌ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΡΠ°Π»Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠΈΡΠΊΠ°, Π° ΡΠ°ΠΊΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ, ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ Ρ Π½ΠΈΠΌ. Π‘ΠΌ. ΠΏΡΠ½ΠΊΡ 2.1 ΠΠ»Π°Π²Π½Π°Ρ Π·Π°Π΄Π°ΡΠ° — ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², ΡΠ°Π±ΠΎΡΠ°ΡΡΠΈΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ. Π‘ΠΌ. ΠΏΡΠ½ΠΊΡ 2.2 ΠΠ»Ρ ΡΡΠΎΠ³ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΡΡΠΈ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΎ Π½Π΅ΡΠ΅Ρ Π² ΡΠ΅Π±Π΅ ΠΊΠ»ΡΡΠ΅Π²ΠΎΠΉ ΡΠΌΡΡΠ»: ΠΊΠ°ΠΆΠ΄ΡΠΉ ΡΠ°Π·, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ ΠΏΠΎΡΠΎΠΊ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΠΈΡΠΊΡ (Π° Π·Π½Π°ΡΠΈΡ ΠΈ ΠΊ ΠΊΡΡΠ΅), ΡΠΎ ΠΎΠ½ ΠΊΠ°ΠΊ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΡΠ°Π·Π΄Π΅Π» Π±Π»ΠΎΠΊΠΈΡΡΠ΅ΡΡΡ, Π° Π·Π½Π°ΡΠΈΡ Π»ΡΠ±ΠΎΠΉ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΡΠ°ΡΡΠΈΠΉΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ ΡΠΏΠΈΡΠΊΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΈΠΎΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅Π³ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ. ΠΠΎΠ»Π΅Π΅ ΡΠΎΠ³ΠΎ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠ½ΠΎΡ Π±ΡΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Ρ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΠΈ. Π‘ΠΌ. ΠΏΡΠ½ΠΊΡ 2.3
2. ΠΠ«ΠΠΠΠΠΠΠΠ ΠΠ ΠΠΠΠ’Π
2.1 Π€ΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π» ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ° Π ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° ΠΏΡΠΈΠΌΠ΅Π½ΠΈΠΌΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ:
— InitialList — ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°;
— AddElem — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ°;
— EraseElem — ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°; ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΉ ΠΌΠ½ΠΎΡ ΡΠΏΠΈΡΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ Π²ΡΠ΅Π³ΠΎ 2 ΠΏΠΎΠ»Ρ: ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ ΠΈ ΡΠ΅Π»ΠΎΠ΅ ΡΠΈΡΠ»ΠΎ (Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π΄Π°Π½Π½ΡΠ΅), ΡΠΎ ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π΄Π»Ρ Π΅Π³ΠΎ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎ ΡΡΠΎΠΌΡ ΡΠ°ΠΌΠΎΠΌΡ ΡΠΈΡΠ»Ρ, ΠΏΡΠΈ ΡΡΡΠΎΠΌ ΡΡΠΈΡΠ°Π΅ΡΡΡ, ΡΡΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π΅ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΡΡ (Π΄Π»Ρ ΡΠΎΡΠΌΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ);
— ChangeElem — ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΡΡ ΡΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ·Π»Π°; ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ΅Π½ ΠΏΠΎΠΈΡΠΊΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ;
— Print — Π²ΡΠ²ΠΎΠ΄ Π½Π° ΡΠΊΡΠ°Π½ Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² ΡΠΏΠΈΡΠΊΠ°. ΠΠΎΠ΄ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΌ. Π² ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ Π
2.2 ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΉ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΠ‘ Windows ΠΈ ΠΈΡ ΡΠΎΠ»Ρ Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ Π ΠΏΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π·Π°Π΄Π°ΡΠΈ Π΅ΡΡΡ Π½Π΅ΠΌΠ°Π»ΠΎΠ²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠ½ΠΊΡ — ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΡΠ°Π·Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π΄ΡΡΠ³ Π΄ΡΡΠ³ΠΎΠΌ. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ Π΅Π³ΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΠ΄ ΡΠΏΠΈΡΠΎΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΡΡΠΈ, Π° Π²ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ API ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ:
— HeapCreate. Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΡΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 3 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ fdwOptions ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΏΠΎΡΠΎΠ± Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ ΠΊΡΡΠ΅ΠΉ. Π Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ 0, ΠΠΠΠ _NO_SERIALIZE, ΠΠΠΠ _GENERATE_EXCEPTIONS, HEAP_CREATE_ENABLE_EXECUTE ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ ΡΡΠΈΡ ΡΠ»Π°Π³ΠΎΠ². ΠΡΠΎΡΠΎΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ HeapCreate — dwInitiallSize — ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π±Π°ΠΉΡΠΎΠ², ΠΏΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΡΡ ΠΊΡΡΠ΅. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΡ ΠΎΠΊΡΡΠ³Π»ΡΠ΅Ρ ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π΄ΠΎ Π±Π»ΠΈΠΆΠ°ΠΉΡΠ΅ΠΉ Π±ΠΎΠ»ΡΡΠ΅ΠΉ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ, ΠΊΡΠ°ΡΠ½ΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΡ ΡΡΡΠ°Π½ΠΈΡ. Π ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ, dwMaximumSize, ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ, Π΄ΠΎ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°ΡΡΠΈΡΡΡΡΡΡ ΠΊΡΡΠ° (ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΌ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²Π°, ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΏΠΎΠ΄ ΠΊΡΡΡ). ΠΡΠ»ΠΈ ΠΎΠ½ Π±ΠΎΠ»ΡΡΠ΅ 0, Π²Ρ ΡΠΎΠ·Π΄Π°Π΄ΠΈΡΠ΅ ΠΊΡΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ ΡΠ°ΠΊΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ Π½Ρ ΡΠΌΠΎΠΆΠ΅ΡΠ΅ Π΅Π³ΠΎ ΡΠ²Π΅Π»ΠΈΡΠΈΡΡ. Π Π΅ΡΠ»ΠΈ ΡΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΠ°Π²Π΅Π½ 0, ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΡΠ΅Ρ ΡΠ΅Π³ΠΈΠΎΠ½ ΠΈ, Π΅ΡΠ»ΠΈ Π½Π°Π΄ΠΎ, ΡΠ°ΡΡΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ Π΄ΠΎ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ°. ΠΡΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎΠΌ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΠΊΡΡΠΈ HeapCreate Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ, ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡΠΈΠΉ Π½ΠΎΠ²ΡΡ ΠΊΡΡΡ. Π ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π»Π° ΠΊΡΡΡ Π΄Π»Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΡΡΡΠΊΡΡΡΡ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°.
— HeapAlloc. ΠΡΠ΄Π΅Π»ΡΠ΅Ρ Π±Π»ΠΎΠΊ ΠΏΠ°ΠΌΡΡΠΈ ΠΈΠ· ΠΊΡΡΠΈ. Π― ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π° ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΡΠΏΠΈΡΠΊΠ°. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 3 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ hHeap ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΊΡΡΠΈ, ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ Π²ΡΠ΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ dwBytes ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΡΠ»ΠΎ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ Π² ΠΊΡΡΠ΅ Π±Π°ΠΉΡΠΎΠ². ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ fdwFlags ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΡΠ»Π°Π³ΠΈ, Π²Π»ΠΈΡΡΡΠΈΠ΅ Π½Π° Ρ Π°ΡΠ°ΠΊΡΠ΅Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΠΈ. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΡΠΈ ΡΠ»Π°Π³Π°: HEAP_ZERO_MEMORY, HEAP_GENERATE_EXCEPTIONS ΠΈ HEAP_NO_SERIALIZE.
ΠΡΠΈΠΌΠ΅ΡΠ°Π½ΠΈΠ΅. ΠΠ»Ρ Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΈΡ Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠ°ΠΌΡΡΠΈ (ΠΎΡ 1 ΠΠ±) ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ VirtualAlloc, Π° Π½Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΎΠΏΠ΅ΡΠΈΡΡΡΡΠΈΠ΅ Ρ ΠΊΡΡΠ°ΠΌΠΈ.
— HeapFree. Π‘Π»ΡΠΆΠΈΡ Π΄Π»Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π±Π»ΠΎΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ 3 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ hHeap ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΊΡΡΡ, Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ pvMem ΡΠΎΠΎΠ±ΡΠ°Π΅Ρ Π°Π΄ΡΠ΅Ρ Π±Π»ΠΎΠΊΠ°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ fdwFlags ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΄Π²Π° Π·Π½Π°ΡΠ΅Π½ΠΈΡ: 0 ΠΈΠ»ΠΈ HEAP_NO_SERIALIZE.
— HeapDestroy. Π£Π½ΠΈΡΡΠΎΠΆΠ°Π΅Ρ ΠΊΡΡΡ Π²ΠΌΠ΅ΡΡΠ΅ ΡΠΎ Π²ΡΠ΅ΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π² Π½Π΅ΠΉ Ρ ΡΠ°Π½ΡΡΡΡ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΈ Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄ΠΎΡΡΠΎΠ²Π΅ΡΠΈΡΡΡΡ, ΡΡΠΎ Π½ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π±ΠΎΠ»ΡΡΠ΅ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠΈ Π΄Π°Π½Π½ΡΠ΅. Π ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π±ΡΠ΄Π΅Ρ Π²ΡΠ±ΡΠΎΡΠ΅Π½ΠΎ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΊΠΎΠ½ΡΠΈΡΡΡ Π½Π΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎ. ΠΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π²ΡΠ΅Π³ΠΎ 1 ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ hHeap, ΠΊΠΎΡΠΎΡΡΠΉ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΠΊΡΡΡ.
— Π‘Π»Π΅Π΄ΡΡΡΠΈΠ΅ Π΄Π²Π΅ ΡΡΠ½ΠΊΡΠΈΠΈ — HeapLock ΠΈ HeapUnlock — ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΏΠ°ΡΠ½ΠΎ. ΠΠ½ΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Ρ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠ·ΠΎΠ²Π° HeapLock ΠΏΠΎΡΠΎΠΊ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΡΠ·ΡΠ²Π°Π» ΡΡΡ ΡΡΠ½ΠΊΡΠΈΡ, ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ΅ΠΌ ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ ΠΊΡΡΠΈ. ΠΡΠ»ΠΈ Π΄ΡΡΠ³ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ°Π΅ΡΡΡ ΠΊ ΡΡΠΎΠΉ ΠΊΡΡΠ΅, ΡΠΊΠ°Π·ΡΠ²Π°Ρ ΡΠΎΡ ΠΆΠ΅ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ ΠΊΡΡΠΈ, ΡΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΈΠΎΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ Π΅Π³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΊΡΡΠ° Π½Π΅ Π±ΡΠ΄Π΅Ρ ΡΠ°Π·Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π° Π²ΡΠ·ΠΎΠ²ΠΎΠΌ HeapUnlock. Π€ΡΠ½ΠΊΡΠΈΠΈ HeapAlloc, HeapSize, HeapFree ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ — Π²ΡΠ΅ ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ ΠΊ HeapLock ΠΈ HeapUnlock, ΡΡΠΎΠ±Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΡΠ²Π½ΠΎ Π² ΠΊΠΎΠ΄Π΅ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π½Π΅ ΠΏΡΠΎΠΏΠΈΡΠ°Π½Ρ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ½ΠΊΡΠ° 2.2 Π²Π·ΡΡΠ° ΠΈΠ· ΠΊΠ½ΠΈΠ³ΠΈ ΠΠΆΠ΅ΡΡΡΠΈ Π ΠΈΡ ΡΠ΅ΡΠ° «Windows Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ²»
2.3 Π‘ΡΠ΅Π΄ΡΡΠ²Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠΎΠΊΠ° ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ:
uintptr_t _beginthread (
void (*start_address)(void *),
unsigned stack_size,
void *arglist
);
ΠΠ΅ΡΠ²ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠΎ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΎΡΠΊΠΎΠΉ Π²Ρ ΠΎΠ΄Π° Π΄Π»Ρ ΡΠ°ΠΌΠΎΠ³ΠΎ ΠΏΠΎΡΠΎΠΊΠ°. Π‘Π°ΠΌΠ° ΡΡΠ½ΠΊΡΠΈΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ:
void myThread (void* pParams)
{
.. .
}
ΠΠΌΡ ΠΊΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ Π»ΡΠ±ΠΎΠ΅. ΠΡΠΎΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ ΡΡΠΎ Π½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ°. ΠΠΎΡΡΠΈ Π² Π»ΡΠ±ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΊΠ°ΠΊ 0. Π’ΠΎΠ³Π΄Π° ΡΠ°Π·ΠΌΠ΅Ρ ΡΡΠ΅ΠΊΠ° Π±ΡΠ΄Π΅Ρ ΡΠ°Π²Π΅Π½ ΡΠΎΠΌΡ ΠΆΠ΅, ΡΡΠΎ ΠΈ Ρ Π³Π»Π°Π²Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π‘ ΡΡΠ΅ΡΡΠΈΠΌ Π²ΡΠ΅ Π΅ΡΡ Π»Π΅Π³ΡΠ΅, ΡΡΠΎ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠ°, ΠΊΠΎΡΠΎΡΡΠ΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΊΠ°ΠΊ NULL. ΠΠ»ΠΈ ΠΆΠ΅ Π²ΡΠ³Π»ΡΠ΄Π΅ΡΡ ΠΊΠ°ΠΊ (void*)(pParam) Π² ΡΠ»ΡΡΠ°Π΅ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. ΠΠ»Ρ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π²ΡΡΠ΅ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ ΠΏΡΠ½ΠΊΡΠ° 2.3 Π²Π·ΡΡΠ° Ρ ΡΠ°ΠΉΡΠ° http://forum.xakep.ru/
2.4 ΠΠΎΡΡΠ΄ΠΎΠΊ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΠΎΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ·Π΄Π°Π΅Ρ ΡΠΏΠΈΡΠΎΠΊ ΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ Π΅Π³ΠΎ. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ 4 ΠΏΠΎΡΠΎΠΊΠ°. Π‘ΠΌ. ΠΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Π ΠΠ΅ΡΠ²ΡΠΉ ΠΏΡΡΠ°Π΅ΡΡΡ ΠΏΠΎ ΠΎΡΠ΅ΡΠ΅Π΄ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΎΡ 1 Π΄ΠΎ 9, Π²ΡΠΎΡΠΎΠΉ — ΡΠ΄Π°Π»ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΠ·Π»Ρ, ΡΡΠ΅ΡΠΈΠΉ — ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΌ 1000, Π° ΡΠ΅ΡΠ²Π΅ΡΡΡΠΉ — Π²ΡΠ²Π΅ΡΡΠΈ Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΏΠΈΡΠΊΠ° (10 ΠΏΠΎΠΏΡΡΠΎΠΊ). ΠΡΠ΅ ΠΏΠΎΡΠΎΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅ ΡΠΏΠΈΡΠΊΠ° ΡΠΌ. Π² ΠΏΡΠ½ΠΊΡΠ΅ 2.1 Π ΡΠΈΠ»Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·Π½ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°.
2.5 ΠΠ°Π±ΠΎΡ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΡΠ°ΠΊΠΈΠ΅ ΡΠ΅ΡΡΠΎΠ²ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠ°ΠΊ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°ΡΡ ΠΏΡΡΡΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ, ΠΏΠΎΠΏΡΡΠΊΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ Π½Π΅ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΈΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° ΠΏΡΡΡΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°. Π’Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ/ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠΎΠ½Π΅ΡΠ½ΠΎ ΠΆΠ΅, ΠΎΡΠ½ΠΎΠ²Π½ΡΠΌ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠΌ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΊΡΡΡΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ². ΠΠ° Π²ΡΠ΅ ΡΡΠΈ ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π»ΠΈΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΡΠΉ Π·Π°ΠΏΡΡΠΊ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠ΅ΠΌΡ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΡΠΉ — ΠΏΠΎΡΠΎΠΌΡ ΡΡΠΎ Π² ΡΠΈΠ»Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΡΠ°Π±ΠΎΡΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΠΏΡΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π΅Π³ΠΎ Π·Π°ΠΏΡΡΠΊΠ΅ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠ°Π·Π½ΡΠ΅, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΏΠΎΡΠΎΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΠΎ, ΠΏΠΎΡΡΠΎΠΌΡ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ΠΏΡΠ΅Π΄ΡΠΊΠ°Π·ΡΠ΅ΠΌΠ°.
ΠΡΠ°ΠΊ Π²ΠΎΡ ΡΠΊΡΠΈΠ½ΡΠΎΡΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² 3 Π·Π°ΠΏΡΡΠΊΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΡΠ΅ Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ:
Π ΠΈΡΡΠ½ΠΎΠΊ 1. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ°ΠΊ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· Π ΠΈΡΡΠ½ΠΊΠ° 1, ΠΏΠ΅ΡΠ²ΡΠΌ Π΄Π΅Π»ΠΎΠΌ ΠΏΠΎΡΠΎΠΊ 1 Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² ΡΠΏΠΈΡΠΎΠΊ ΡΠ·Π΅Π» ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ 1. ΠΠΎΡΠ»Π΅ ΡΠ΅Π³ΠΎ ΠΏΠΎΡΠΎΠΊ 3 ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ» Π΅Π³ΠΎ Π½Π° ΡΠ·Π΅Π» 1001. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠΎΠΏΡΡΠΊΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ·Π»Ρ ΡΠΏΠΈΡΠΊΠ° Π½Π΅ ΡΠ²Π΅Π½ΡΠ°Π»ΠΈΡΡ ΡΡΠΏΠ΅Ρ ΠΎΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ 2−9 Π² ΡΠΏΠΈΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½Π΅ Π±ΡΠ»ΠΈ. ΠΠ° ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΡΠ°ΠΏΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ Π·Π°Ρ Π²Π°ΡΠΈΠ» ΠΏΠΎΡΠΎΠΊ 4 ΠΈ 10 ΡΠ°Π· Π²ΡΠ²Π΅Π» ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅ ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½. ΠΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ 10 ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠ° 2 ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΡΡΠΏΠ΅ΡΠ½ΡΠΌΠΈ Π½Π΅ Π±ΡΠ»ΠΈ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΠΊΠΈΡ ΡΠ·Π»ΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅ Π½Π΅Ρ (ΡΠ·Π΅Π» 1 Π±ΡΠ» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ Π½Π° 1001, ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π΅ΡΠ΅ Π½Π΅ Π±ΡΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ). ΠΠ°Π»Π΅Π΅ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° ΠΏΠ΅ΡΠ΅Π΄Π°Π»ΠΎΡΡ ΠΏΠΎΡΠΎΠΊΡ 1 ΠΈ ΠΎΠ½ Π΄ΠΎΠ±Π°Π²ΠΈΠ» ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ. ΠΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΡΠΉ Π²ΡΠ²ΠΎΠ΄ ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΠ΅Ρ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡΠΌ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ΄Π°Π»ΠΈΠ» ΠΊΡΡΡ.
Π ΠΈΡΡΠ½ΠΎΠΊ 2. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΠ° Π ΠΈΡΡΠ½ΠΊΠ΅ 2 Π²ΠΈΠ΄Π½ΠΎ, ΡΡΠΎ Π² Π½Π°ΡΠ°Π»Π΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ 1 ΠΏΠΎΠ»ΡΡΠΈΠ» Π΄ΠΎΡΡΡΠΏ ΠΊ ΠΊΡΡΠ΅ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ ΠΈ ΡΡΠΏΠ΅ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΠΈΠ» Π² Π½Π΅Π³ΠΎ 10 ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ². ΠΠ°Π»Π΅Π΅ ΠΏΠΎΡΠΎΠΊ 4 2 ΡΠ°Π·Π° ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΠ°Π» ΡΠΏΠΈΡΠΎΠΊ. ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π±ΡΠ»ΠΈ ΡΠ΄Π°Π»Π΅Π½Ρ ΠΏΠΎΡΠΎΠΊΠΎΠΌ 2, ΠΈΠ·-Π·Π° ΡΠ΅Π³ΠΎ 10 ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠ° 3 ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈ 8 ΠΏΠΎΠΏΡΡΠΎΠΊ ΠΏΠΎΡΠΎΠΊΠ° 4 Π²ΡΠ²Π΅ΡΡΠΈ ΠΈΡ Π½Π° ΡΠΊΡΠ°Π½ Π½Π΅ ΡΠ΄Π°Π»ΠΈΡΡ, ΡΠ°ΠΊ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ» ΠΏΡΡΡ. ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠ΅Ρ ΠΏΠΎΡΠΎΠΊΠΎΠ² Π³Π»Π°Π²Π½ΡΠΉ ΠΏΠΎΡΠΎΠΊ ΡΠ΄Π°Π»ΠΈΠ» ΠΊΡΡΡ.
Π Π°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈ 3-Π΅ΠΌ Π·Π°ΠΏΡΡΠΊΠ΅ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠΎΠ²ΠΏΠ°Π»Π° Ρ 1-ΡΠΌ ΡΠ»ΡΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΎΡΡΠ°ΠΆΠ΅Π½ΠΎ Π½Π° Π ΠΈΡΡΠ½ΠΊΠ΅ 3.
Π ΠΈΡΡΠ½ΠΎΠΊ 3. Π Π΅Π·ΡΠ»ΡΡΠ°Ρ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
ΠΏΡΠ» ΠΏΠΎΡΠΎΠΊ ΡΠ²ΡΠ·Π½ΠΎΠΉ ΡΠΏΠΈΡΠΎΠΊ
ΠΠ«ΠΠΠΠ« Π§ΡΠΎΠ±Ρ ΠΏΠΎΠ΄ΡΡΠΎΠΆΠΈΡΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠ° Ρ ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΡΠ΄Π΅Π»Π°ΡΡ ΡΡΠ΄ Π²ΡΠ²ΠΎΠ΄ΠΎΠ². ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , Π²ΡΠ΅ ΡΠ΅Π»ΠΈ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ Π±ΡΠ»ΠΈ Π΄ΠΎΡΡΠΈΠ³Π½ΡΡΡ ΠΏΡΡΠ΅ΠΌ ΠΏΠΎΡΠ°Π³ΠΎΠ²ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΈΠΌΠΈ Π·Π°Π΄Π°Ρ. Π‘ΠΌ.
ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
Π― ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΠ»Π°ΡΡ Ρ ΡΠ°ΠΊΠΈΠΌΠΈ ΠΏΠΎΠ½ΡΡΠΈΡΠΌΠΈ ΠΊΠ°ΠΊ ΠΊΡΡΠ°, ΡΠ²ΡΠ·Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΠΎΡΡΡ, ΠΎΠ²Π»Π°Π΄Π΅Π»Π° Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡΠΎΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ², Π° ΡΠ°ΠΊΠΆΠ΅ Π½Π°Π²ΡΠΊΠ°ΠΌΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΡΠ΄Π° ΡΠ΅ΡΡΠΎΠ² ΠΏΡΠΈ ΠΎΡΠ»Π°Π΄ΠΊΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, Π½Π°ΠΏΠΈΡΠ°Π½Π½Π°Ρ ΠΌΠ½ΠΎΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ, ΠΏΡΠΎΡΠ»Π° Π²ΡΠ΅ Π·Π°ΡΠ²Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅ΡΡΡ ΡΡΠΏΠ΅ΡΠ½ΠΎ, ΡΡΠΎ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΡΡΠΈ Π΅Π΅ ΡΠ°Π±ΠΎΡΡ. Π₯ΠΎΡΠ΅Π»ΠΎΡΡ Π±Ρ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π²ΡΠ΄Π΅Π»ΠΈΡΡ ΡΠΎΡ ΡΠ°ΠΊΡ, ΡΡΠΎ ΠΌΠ΅ΡΠΎΠ΄ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΠΎΠΊΠΎΠ² ΠΏΡΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΊΡΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΠΎΠΊΠ°Π·Π°Π»ΡΡ Π΄Π»Ρ ΠΌΠ΅Π½Ρ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½ΡΠΌ. ΠΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°Π²ΡΠΈΡΡ Π² Π΅Π³ΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ , Ρ Π½Π°ΡΠ»Π° Π΅Π³ΠΎ Π²Π΅ΡΡΠΌΠ° ΡΠ΄ΠΎΠ±Π½ΡΠΌ ΠΈ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠ΅, ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌ.
ΠΠ‘ΠΠΠΠ¬ΠΠΠΠΠΠΠ«Π ΠΠ‘Π’ΠΠ§ΠΠΠΠ ΠΠΠ€ΠΠ ΠΠΠ¦ΠΠ
1. Cormen, Leiserson, Rivest, and Stein. Introduction to Algorithms, 2nd edition. The MIT Press, 2001
2. http://ru.wikipedia.org/wiki/Π‘Π²ΡΠ·Π½ΡΠΉ_ΡΠΏΠΈΡΠΎΠΊ
3. ΠΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ
4. ΠΠΆΠ΅ΡΡΡΠΈ Π ΠΈΡ ΡΠ΅Ρ «Windows Π΄Π»Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΈΠΎΠ½Π°Π»ΠΎΠ²»
5. http://forum.xakep.ru/
ΠΠ ΠΠΠΠΠΠΠΠ, Π ΠΠ°Π΄Π°Π½ΠΈΠ΅ Π½Π° ΠΠ
1. ΠΠ·Π½Π°ΠΊΠΎΠΌΠΈΡΡΡΡ ΡΠΎ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΏΠΈΡΠΎΡΠ½ΡΡ ΡΡΡΡΠΊΡΡΡ.
2. ΠΠ·ΡΡΠΈΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ API Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΏΡΠ»ΠΎΠΌ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΠ‘ Windows
3. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ΠΌ Π·Π°Π΄Π°ΡΠΈ.
4. Π Π°Π·ΡΠ°Π±ΠΎΡΠ°ΡΡ ΡΡΠ΄ ΡΠ΅ΡΡΠΎΠ² Π΄Π»Ρ Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΈ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
5. ΠΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΈΡΡ ΠΎΡΡΠ΅Ρ ΠΏΠΎ ΠΊΡΡΡΠΎΠ²ΠΎΠΌΡ ΠΏΡΠΎΠ΅ΠΊΡΡ.
ΠΠ΅ΠΌΠΎΠ½ΡΡΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ:
— Π³Π»Π°Π²Π½ΡΠΉ, ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΠΈΠΉ ΡΡΡΡΠΊΡΡΡΡ ΡΠΏΠΈΡΠΊΠ° ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°ΡΡΠΈΠΉ ΠΏΠΎΡΠ»Π΅ Π΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠ°ΠΌΡΡΡ;
— ΠΏΠΎΡΠΎΠΊ, Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π² ΡΠΏΠΈΡΠΎΠΊ;
— ΠΏΠΎΡΠΎΠΊ, ΡΠ΄Π°Π»ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ ΠΈΠ· ΡΠΏΠΈΡΠΊΠ°;
— ΠΏΠΎΡΠΎΠΊ, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΠΉ ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ;
— ΠΏΠΎΡΠΎΠΊ, ΡΠΈΡΠ°ΡΡΠΈΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ° (Π²ΡΠ²ΠΎΠ΄ΡΡΠΈΠΉ ΡΠΏΠΈΡΠΎΠΊ Π½Π° ΡΠΊΡΠ°Π½).
ΠΠ ΠΠΠΠΠΠΠΠ Π ΠΠΈΡΡΠΈΠ½Π³ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ
//—————————————————————————————————————;
//HEADER.H
//—————————————————————————————————————;
typedef struct node //ΡΠ·Π΅Π» ΡΠΏΠΈΡΠΊΠ°, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΡΠ΅Π»ΠΎΠ³ΠΎ ΡΠΈΡΠ»Π° ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ
{
int number;
struct node *next;
}Node, *pnode;
typedef struct list //ΡΡΡΡΠΊΡΡΡΠ° ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ»ΡΡΠ΅Π²ΠΎΠ³ΠΎ ΡΠΏΠΈΡΠΊΠ°
{
int nodes; //ΠΊΠΎΠ»-Π²ΠΎ ΡΠ·Π»ΠΎΠ² Π² ΡΠΏΠΈΡΠΊΠ΅
node *end; //ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅
node *beg; //ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π² ΡΠΏΠΈΡΠΊΠ΅
}List, *pList;
typedef struct params //ΡΡΡΡΠΊΡΡΡΠ° Π΄Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΠΏΠΎΡΠΎΠΊΡ
{
List *pq; //ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠΏΠΈΡΠΎΠΊ
HANDLE hp; //ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΠΊΡΡΡ
}Params;
HANDLE InitialList (List *pq, HANDLE hp); //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°
bool AddElem (List *pq, HANDLE hp, int n); //Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ number =
n Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ°
bool EraseElem (List *pq, HANDLE hp, int n); //ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ number =
n
bool ChangeElem (List *pq, HANDLE hp, int o, int n); //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ
number=o Π½Π° ΡΠ·Π΅Π» Ρ number=n
bool Print (const List *pq, HANDLE hp); //Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π½Π°
ΡΠΊΡΠ°Π½
void ThreadAdd (void *p); //ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ²
void ThreadErase (void *p); //ΠΏΠΎΡΠΎΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ²
void ThreadChange (void *p); //ΠΏΠΎΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ²
void ThreadPrint (void *p); //ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° Π²ΡΠ΅Ρ ΡΠ·Π»ΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½
//—————————————————————————————————————;
//LFUN.CPP — ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΠ΅Π»Π° ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ°Π±ΠΎΡΡ ΡΠΎ ΡΠΏΠΈΡΠΊΠΎΠΌ
//—————————————————————————————————————;
#include
#include
#include
#include
#include
#include
#include
#include
#include «header.h»
using namespace std;
HANDLE InitialList (List *pq, HANDLE hp) //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°
{
hp = HeapCreate (0, 0×1000, 0×10 000); //ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΊΡΡΠΈ Π΄Π»Ρ ΡΠΏΠΈΡΠΊΠ°
pq->beg = NULL; //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ Π½Π°ΡΠ°Π»Π° ΠΈ ΠΊΠΎΠ½ΡΠ° ΡΠΏΠΈΡΠΊΠ°
pq->end = NULL;
pq->nodes = 0; //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ·Π»ΠΎΠ²
return hp;
}
bool AddElem (List *pq, HANDLE hp, int n) //Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ number =
n Π² ΠΊΠΎΠ½Π΅Ρ ΡΠΏΠΈΡΠΊΠ°
{
int fl = HeapLock (hp); //Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²
if (fl == 0) //Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ
{
cout << «adding failed» << endl;
return false;
}
Node *p_new;
p_new = (pnode)HeapAlloc (hp, HEAP_ZERO_MEMORY, 10);
//Π²ΡΠ΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Π² ΠΊΡΡΠ΅ ΠΏΠΎΠ΄ Π½ΠΎΠ²ΡΠΉ ΡΠ·Π΅Π»
if (p_new == NULL) //Π΅ΡΠ»ΠΈ Π²ΡΠ΄Π΅Π»ΠΈΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ
return false;
p_new->number = n; //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠ·Π»Π°
p_new->next = pq->beg; //ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π² ΠΊΠΎΠ½Π΅Ρ, ΡΠΎ
ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° ΡΠ»Π΅Π΄. ΡΠ·Π΅Π»
// ΡΠ°Π²Π΅Π½ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π½Π°ΡΠ°Π»ΠΎ
if (pq->nodes == 0) //Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ Π΅ΡΠ΅ ΠΏΡΡΡ
{
pq->beg = pq->end = p_new;
p_new->next = pq->beg;
}
else //Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅
{
pq->end->next = p_new;
pq->end = p_new;
}
pq->nodes++; //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠ·Π»ΠΎΠ²
cout << n << «added» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
bool EraseElem (List *pq, HANDLE hp, int n) //ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ number = n
{
int fl = HeapLock (hp); //Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²
if (fl == 0) //Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ
{
cout << «erase failed» << endl;
return false;
}
Node *curr;
Node *lcurr;
if (pq->nodes == 0) //Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΡ
{
cout << «list is empty, erase failed» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
curr = pq->beg; //Π² ΠΏΡΠΎΡΠΈΠ²Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅
lcurr = pq->end;
if (curr->number == n) //Π΅ΡΠ»ΠΈ ΠΏΠ΅ΡΠ²ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ — ΠΈΡΠΊΠΎΠΌΡΠΉ
{
if (pq->nodes == 1) //ΠΏΡΠΈ ΡΡΠΎΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ
{
pq->beg = NULL; //ΡΠ΅Π³Π΅Π½Π΅ΡΠ°ΡΠΈΡ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΈ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π²
ΡΠΏΠΈΡΠΊΠ΅
pq->end = NULL;
pq->nodes = 0;
HeapFree (hp, 0, curr); //ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ
cout << n << «erased» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
lcurr->next = curr->next; //ΠΏΡΠΈ ΡΡΠΎΠΌ Π½Π΅ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ
pq->beg = curr->next;
HeapFree (hp, 0, curr); //ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ
pq->nodes—; //Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
cout << n << «erased» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
if (pq->nodes == 1) //Π΅ΡΠ»ΠΈ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΈ ΠΈΡΠΊΠΎΠΌΡΠΌ Π½Π΅
ΡΠ²Π»ΡΠ΅ΡΡΡ
{
cout << «there is no such node in list, erase failed» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
lcurr = curr;
curr = curr->next;
while (curr ≠ pq->beg) //ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
{
if (curr->number ≠ n) //Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΡΠΊΠΎΠΌΡΠΌ — Π΄Π²ΠΈΠ³Π°Π΅ΠΌΡΡ
Π΄Π°Π»ΡΡΠ΅
{
lcurr = curr;
curr = curr->next;
}
else //Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠ°Π²Π΅Π½ ΠΈΡΠΊΠΎΠΌΠΎΠΌΡ
{
if (curr == pq->end)
pq->beg = lcurr;
lcurr->next = curr->next;
HeapFree (hp, 0, curr); //ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° ΠΏΠ°ΠΌΡΡΠΈ
pq->nodes—; //Π΄Π΅ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ²
cout << n << «erased» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
}
cout << «there is no such node in list, erase failed» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
bool ChangeElem (List *pq, HANDLE hp, int o, int n) //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° Ρ
number=o Π½Π° ΡΠ·Π΅Π» Ρ number=n
{
int fl = HeapLock (hp); //Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²
if (fl == 0) //Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ
{
cout << «change failed» << endl;
return false;
}
Node *curr;
if (pq->nodes == 0) //Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΡ
{
cout << «list is empty, change failed» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
curr = pq->beg;
int it_count = pq->nodes;
while (it_count > 0) //ΠΏΠΎΠΈΡΠΊ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
{
if (curr->number ≠ o) //Π΅ΡΠ»ΠΈ Π½Π΅ Π½Π°ΡΠ»ΠΈ — Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ Π΄Π°Π»ΡΡΠ΅ ΠΏΠΎ ΡΠΏΠΈΡΠΊΡ
{
curr = curr->next;
}
else //Π΅ΡΠ»ΠΈ Π½Π°ΡΠ»ΠΈ
{
curr->number = n; //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
cout << o << «changed to «<< n << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
it_count—;
}
cout << «there is no such node in list, change failed» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
bool Print (const List *pq, HANDLE hp)
{
int fl = HeapLock (hp); //Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° Π΄ΠΎΡΡΡΠΏΠ° ΠΊ ΠΊΡΡΠ΅ ΡΠΏΠΈΡΠΊΠ° Π΄ΡΡΠ³ΠΈΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²
if (fl == 0) //Π΅ΡΠ»ΠΈ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ
{
cout << «print failed» << endl;
return false;
}
Node *curr;
if (pq->nodes == 0) //Π΅ΡΠ»ΠΈ ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΡΡ
{
cout << «list is empty, there is nothing to print» << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return false;
}
curr = pq->beg;
cout << curr->number;
curr = curr->next;
while (curr ≠ pq->beg) //Π²ΡΠ²ΠΎΠ΄ Π²ΡΠ΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½
{
cout << ' ' << curr->number;
curr = curr->next;
}
cout << endl;
HeapUnlock (hp); //ΠΎΡΠΌΠ΅Π½Π° Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ ΠΊΡΡΠΈ Π΄Π»Ρ Π΄ΡΡΠ³ΠΈΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
return true;
}
//—————————————————————————————————————;
//MAIN.CPP — ΡΠ΅Π»Π° Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΈ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
//—————————————————————————————————————;
#include //ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
#include
#include
#include
#include
#include
#include «header.h»
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
int c = 0; //ΡΡΠ΅ΡΡΠΈΠΊ Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
void ThreadAdd (void *p) //ΠΏΠΎΡΠΎΠΊ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠ·Π»ΠΎΠ²
{
int counter = 1;
Params *pp = new Params ();
pp = (Params*) p;
while (counter < 10) //Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠΏΠΈΡΠΎΠΊ
ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΎΡ 0 Π΄ΠΎ 9
{
AddElem (pp->pq, pp->hp, counter);
counter++;
}
c++; //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
_endthread ();
}
void ThreadErase (void *p) //ΠΏΠΎΡΠΎΠΊ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
{
int counter = 1;
Params *pp = new Params ();
pp = (Params*) p;
while (counter < 10) //ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° ΠΈΠ· ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠΏΠΈΡΠΊΠ°
ΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ 9
{
EraseElem (pp->pq, pp->hp, counter);
counter++;
}
c++; //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
_endthread ();
}
void ThreadChange (void *p) //ΠΏΠΎΡΠΎΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ²
{
int counter = 1;
Params *pp = new Params ();
pp = (Params*) p;
while (counter < 10) //ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ·Π»Π° ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°Ρ ΡΠΏΠΈΡΠΊΠ° ΡΠΎ
Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎΡ 0 Π΄ΠΎ 9 ΠΏΡΡΠ΅ΠΌ ΠΏΡΠΈΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΊ Π½ΠΈΠΌ 1000
{
ChangeElem (pp->pq, pp->hp, counter, counter+1000);
counter++;
}
c++; //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
_endthread ();
}
void ThreadPrint (void *p) //ΠΏΠΎΡΠΎΠΊ Π²ΡΠ²ΠΎΠ΄Π° ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½
{
int counter = 0;
Params *pp = new Params ();
pp = (Params*) p;
while (counter < 10) //10 ΠΏΠΎΠΏΡΡΠΎΠΊ Π²ΡΠ²Π΅ΡΡΠΈ ΡΠ·Π»Ρ ΡΠΏΠΈΡΠΊΠ° Π½Π° ΡΠΊΡΠ°Π½
{
Print (pp->pq, pp->hp);
counter++;
}
c++; //ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½Ρ ΡΡΠ΅ΡΡΠΈΠΊΠ° Π·Π°Π²Π΅ΡΡΠΈΠ²ΡΠΈΡ ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²
_endthread ();
}
int main ()
{
HANDLE hp = NULL;
List q;
hp = InitialList (&q, hp); //ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠΈΡΠΊΠ°
Params *p = new Params ();
p->pq = &q;
p->hp = hp;
_beginthread (ThreadAdd, 2, (void*)(p)); //Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΡ
ΠΏΠΎΡΠΎΠΊΠΎΠ²
_beginthread (ThreadErase, 2, (void*)(p));
_beginthread (ThreadChange, 2, (void*)(p));
_beginthread (ThreadPrint, 2, (void*)(p));
while (1) //ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΎΡΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠΎΠΊΠΎΠ²
{
if (c == 4)
{
Print (&q, hp); //ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΠΏΠ΅ΡΠ°ΡΡΠ²Π°Π½ΠΈΠ΅ ΡΠΏΠΈΡΠΊΠ°
HeapDestroy (hp); //ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΊΡΡΠΈ
cout << «heap destroyed» << endl;
break;
}
}
}