Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅

Π’ΠΈΠΏΡ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ Π² структурС Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. 193134314787539102506004769900225743022. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-193134314787539102506004769900225743022. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 193134314787539102506004769900225743022

Как Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· самого названия, простая ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ позволяСт Π½Π°ΠΌ просто Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ вставка ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ. Вставка происходит Π² ΠΊΠΎΠ½Ρ†Π΅ (ΠΊΠΎΠ½Ρ†Π΅) ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π° удалСния Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π² Π½Π°Ρ‡Π°Π»Π΅ (Π½Π°Ρ‡Π°Π»Π΅) списка ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

ВсС ΡƒΠ·Π»Ρ‹ соСдинСны Π΄Ρ€ΡƒΠ³ с Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π° ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠ·Π΅Π» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ указатСля, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π½Π΅Π³ΠΎ, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ послСдний ΡƒΠ·Π΅Π» Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ указатСля, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π½Π° Π½Π΅Π³ΠΎ.

ΠšΡ€ΡƒΠ³ΠΎΠ²Π°Ρ ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. 335305227015239372546128035430686907846. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-335305227015239372546128035430686907846. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 335305227015239372546128035430686907846

Π’ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ простых ΠΎΡ‡Π΅Ρ€Π΅Π΄Π΅ΠΉ, Π² цикличСской ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΡƒΠ·Π΅Π» ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ соСдиняСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ, Π½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ послСднСго ΡƒΠ·Π»Π° Ρ‚Π°ΠΊΠΆΠ΅ связан с адрСсом ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°. Π‘Π»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, послСдний ΡƒΠ·Π΅Π» ΠΈ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΠ·Π΅Π» Ρ‚Π°ΠΊΠΆΠ΅ ΡΠΎΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ, образуя ΠΎΠ±Ρ‰ΡƒΡŽ ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΡƒΡŽ связь.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ²

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. 101853308893922248597799808125023478311. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-101853308893922248597799808125023478311. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 101853308893922248597799808125023478311

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠ² Π΄Π΅Π»Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Π΅Ρ€Π΅Π· ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ элСмСнтам Π΄Π°Π½Π½Ρ‹Ρ….

Π₯отя ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ выполняСтся Π² соотвСтствии с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π° (элСмСнт Π΄Π°Π½Π½Ρ‹Ρ… с Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ удаляСтся ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ), вставка выполняСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ порядку.

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ (Dequeue)

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. 105681484970092958639619330049686103529. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-105681484970092958639619330049686103529. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 105681484970092958639619330049686103529

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ вставки ΠΈ удалСния с ΠΎΠ±ΠΎΠΈΡ… ΠΊΠΎΠ½Ρ†ΠΎΠ² (ΠΏΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π½ΠΈΠΉ) ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠ΅ΠΉ структур Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ для ΠΈΡ… ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΡ‡Π΅Π½ΡŒ Π²Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ… Ρ‚ΠΈΠΏΡ‹.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Как ΠΈ Π·Π°Ρ‡Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Π΄Π²ΡƒΡ… стСках

Π”Π°Π½Π½Ρ‹ΠΉ пост написан для Π½ΠΎΠ²ΠΈΡ‡ΠΊΠΎΠ² Π² ΠΎΠ»ΠΈΠΌΠΏΠΈΠ°Π΄Π½ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², готовящихся ΠΊ ΠΏΡ€ΠΎΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΡŽ алгоритмичСских ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ. Π’ ΠΊΠΎΠ½Ρ†Π΅ бонусная Π·Π°Π΄Π°Ρ‡ΠΊΠ°. Если заинтСрСсовал, ΠΏΡ€ΠΎΡˆΡƒ ΠΏΠΎΠ΄ ΠΊΠ°Ρ‚ πŸ™‚

Для Π½Π°Ρ‡Π°Π»Π° вспомним основы:

Π‘Ρ‚Π΅ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ LIFO (Π°Π½Π³Π». last in β€” first out, «послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β»).

Π‘Ρ‚Π΅ΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ:

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… с доступом ΠΊ элСмСнтам FIFO (Π°Π½Π³Π». First In, First Out – Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΡ‘Π»Β»)

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° основных ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Π² своСм интСрфСйсС:

ΠžΠ±Ρ‹Ρ‡Π½ΠΎ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ Π΄Π²Π° Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π° ΠΊ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ:

ΠŸΠΎΡ‡Π΅ΠΌΡƒ стСк ΠΊΡ€ΡƒΡ‡Π΅, Ρ‡Π΅ΠΌ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΠΌ сСбС, Ρ‡Ρ‚ΠΎ наша структура Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ»ΠΆΠ½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ:

Для стСка ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ просто ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±ΡƒΡŽ ΠΈΠ· ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ: достаточно Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ ΠΏΠ°Ρ€Ρƒ:

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. edcd9cf9bd12c2fbcc827bf860841296. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-edcd9cf9bd12c2fbcc827bf860841296. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° edcd9cf9bd12c2fbcc827bf860841296

, Π³Π΄Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ элСмСнт ΠΏΠ°Ρ€Ρ‹ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΉ ΠΊΠΎ всСм элСмСнтам стСка.

НиТС ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠ° Π½Π° Python:

А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΡƒΠΌΠ°ΠΉΡ‚Π΅, ΠΊΠ°ΠΊ ΠΏΡ€ΠΎΠ΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΡ‚ ΠΆΠ΅ фокус с ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ? Если ΠΏΡ€ΠΎΠ±ΠΎΠ²Π°Ρ‚ΡŒ с классичСской ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Π½Π° массивС, вряд Π»ΠΈ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ получится. Π­Ρ‚ΠΎ связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ опСрация ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ (ΠΊΠ°ΠΊ опСрация слоТСния ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ вычитания, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€). Как Π²Ρ‹ ΠΌΠΎΠ³Π»ΠΈ Π΄ΠΎΠ³Π°Π΄Π°Ρ‚ΡŒΡΡ, Π΄Π°Π»Π΅Π΅ я расскаТу ΠΎ Π½Π΅ совсСм классичСской Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° Π΄Π²ΡƒΡ… стСках.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Π΄Π²ΡƒΡ… стСках

Π“Π»Π°Π²Π½ΠΎΠ΅ условиС, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ β€” всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π·Π° Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ O(1).

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ Π΄Π²Π° стСка: s1 ΠΈ s2.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ push Π±ΡƒΠ΄Π΅ΠΌ всСгда Π΄Π΅Π»Π°Ρ‚ΡŒ Π² стСк s1.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ pop Π±ΡƒΠ΄Π΅Ρ‚ устроСна Ρ‚Π°ΠΊ: Ссли стСк s2 пустой, ΠΏΠ΅Ρ€Π΅ΠΊΠ»Π°Π΄Ρ‹Π²Π°Π΅ΠΌ всС элСмСнты ΠΈΠ· s1 Π² s2 ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ pop ΠΈ push. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π² стСкС s2 Π»Π΅ΠΆΠ°Ρ‚ элСмСнты Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС (самый Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт β€” это самый ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½Ρ‹ΠΉ элСмСнт Π² Π½Π°ΡˆΡƒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ).

Если s2 Π½Π΅ пуст, Ρ‚ΡƒΠΏΠΎ достаСм элСмСнты ΠΈΠ· Π½Π΅Π³ΠΎ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ s2 окаТСтся снова пустым повторяСм Ρ‚Ρƒ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ.

ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ push: ΠœΡ‹ Ρ‚ΡƒΠΏΠΎ ΠΊΠ»Π°Π΄Π΅ΠΌ элСмСнт Π² стСк s1. ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ O(1).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ pop: Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ элСмСнта ΠΌΡ‹ Π΄Π΅Π»Π°Π΅ΠΌ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ пСрСкладывания ΠΈΠ· стСка Π² стСк, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π°ΠΌΠΎΡ€Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ врСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ составит O(1).

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ get_min: Для стСков s1 ΠΈ s2 извСстны ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΡ‹, поэтому ΠΌΡ‹ просто Π±Π΅Ρ€Π΅ΠΌ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ ΠΈΠ· ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠ². ВрСмя Ρ€Π°Π±ΠΎΡ‚Ρ‹ O(1).

Бонусная Π·Π°Π΄Π°Ρ‡ΠΊΠ°

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Бпасибо, Ρ‡Ρ‚ΠΎ Π΄ΠΎΡ‡ΠΈΡ‚Π°Π»ΠΈ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π°!

Если вас заинтСрСсовала Ρ‚Π΅ΠΌΠ°, ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€ΡΠΈΡΡ‚Π΅Π½Ρ‚Π½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π° Π΄Π²ΡƒΡ… стСках здСсь, Π»ΠΈΠ±ΠΎ Π΄ΠΎΠΆΠ΄Π°Ρ‚ΡŒΡΡ Π²Ρ‹Ρ…ΠΎΠ΄Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ ΠΌΠΎΠ΅Π³ΠΎ Ρ‚ΠΎΠΏΠΈΠΊΠ°.

ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях ΠΊΠ°ΠΊΠΈΠ΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π΄Π²ΡƒΡ… стСках Π²Π°ΠΌ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π½Π° ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ ΠΈΠ»ΠΈ контСстах.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ β€” Ρ‡Ρ‚ΠΎ это, Π·Π°Ρ‡Π΅ΠΌ ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ Π½Π° возмоТности AWS SQS

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. image loader. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

Π‘Π½Π°Ρ‡Π°Π»Π° Π΄Π°Π²Π°ΠΉΡ‚Π΅ Π΄Π°Π΄ΠΈΠΌ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ½ΡΡ‚ΠΈΡŽ Β«ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” queueΒ».

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ для рассмотрСния Ρ‚ΠΈΠΏ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Β«FIFOΒ»(first in, first out). Если Π²Π·ΡΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· Π²ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ β€” «это абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… с дисциплиной доступа ΠΊ элСмСнтам». Если Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ· Π½Π΅Π΅ Π΄ΠΎΡΡ‚Π°Π²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Π² случайном порядкС, Π° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ Ρ‚ΠΎ β€” Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΡˆΠ»ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Π”Π°Π»Π΅Π΅, Π½ΡƒΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π·Π°Ρ‡Π΅ΠΌ Π²ΠΎΠΎΠ±Ρ‰Π΅ ΠΎΠ½ΠΈ Π½ΡƒΠΆΠ½Ρ‹?

1. Для ΠΎΡ‚Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ. ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ являСтся ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΎΠΊ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ» Π½Π° сайт ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ, эта опСрация Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΆΠ΄Π°Ρ‚ΡŒ Π½Π΅ Ρ…ΠΎΡ‡Π΅Ρ‚. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ Π³Ρ€ΡƒΠ·ΠΈΠΌ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ, Π΄Π°Π»Π΅Π΅ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ Π΅Π΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. И ΠΎΠ½Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π°, ΠΊΠΎΠ³Π΄Π° ΠΊΠ°ΠΊΠΎΠΉ Π»ΠΈΠ±ΠΎ Β«workerΒ» Π΅Π΅ достанСт.

2. Для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΈΠΊΠΎΠ²Ρ‹Ρ… Π½Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π΅ΡΡ‚ΡŒ какая-Ρ‚ΠΎ Ρ‡Π°ΡΡ‚ΡŒ систСмы, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΈΠ½ΠΎΠ³Π΄Π° ΠΎΠ±Ρ€ΡƒΡˆΠΈΠ²Π°Π΅Ρ‚ΡΡ большой Ρ‚Ρ€Π°Ρ„ΠΈΠΊ ΠΈ ΠΎΠ½Π° Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΌΠ³Π½ΠΎΠ²Π΅Π½Π½ΠΎΠ³ΠΎ ΠΎΡ‚Π²Π΅Ρ‚Π°. Как Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, гСнСрация ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ ΠΎΡ‚Ρ‡Π΅Ρ‚ΠΎΠ². Выкидывая Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ эту Π·Π°Π΄Π°Ρ‡Ρƒ β€” ΠΌΡ‹ Π΄Π°Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ это с Ρ€Π°Π²Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ Π½Π°Π³Ρ€ΡƒΠ·ΠΊΠΎΠΉ Π½Π° систСму.

3. ΠœΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ. И Π½Π°Π²Π΅Ρ€Π½ΠΎΠ΅ самая ваТная ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π΄Π°Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ
ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄Π½ΡΡ‚ΡŒ нСсколько сСрвисов для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ, Ρ‡Ρ‚ΠΎ сильно повысит ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ столкнСмся, Ссли Π±ΡƒΠ΄Π΅ΠΌ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сами:

1. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ. Π—Π°Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ. Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π΄Π²Π° сСрвиса попросят сообщСния, ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ… Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ сообщСний. Π˜Π½Π°Ρ‡Π΅, получится, Ρ‡Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ сообщСниС обработаСтся Π΄Π²Π° Ρ€Π°Π·Π°. Π§Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ.

2. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ. Π’ сСрвисС Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ систСма, Π·Π°Ρ‰ΠΈΡ‰Π°ΡŽΡ‰Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ситуация, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ случайно Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚-ΠΆΠ΅ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ… Π΄Π²Π° Ρ€Π°Π·Π°. Π’ ΠΈΡ‚ΠΎΠ³Π΅ ΠΌΡ‹ ΠΎΠ΄Π½ΠΎ ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ Π΄Π²Π° Ρ€Π°Π·Π°. Π§Ρ‚ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΆΠ΅ Ρ‡Ρ€Π΅Π²Π°Ρ‚ΠΎ.

3. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Допустим наш сСрвис Π·Π°Π±Ρ€Π°Π» ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ‚Ρ€ΠΈ сообщСния. Π”Π²Π° ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ½ ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π», ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ² запросы Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. А Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ ΠΎΠ½ Π½Π΅ смог ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ ΠΈ ΡƒΠΌΠ΅Ρ€. Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ находится Π² статусС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ β€” нСдоступно для Π΄Ρ€ΡƒΠ³ΠΈΡ… сСрвисов. И ΠΎΠ½ΠΎ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π½Π°Π²Π΅Ρ‡Π½ΠΎ ΠΎΡΡ‚Π°Ρ‚ΡŒΡΡ Π² статусС ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π’Π°ΠΊΠΎΠ΅ сообщСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ ΠΏΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Π»ΠΎΠ³ΠΈΠΊΠ΅. Π’Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΎΠΉ Π»ΠΎΠ³ΠΈΠΊΠΈ ΠΌΡ‹ рассмотрим скоро Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ AWS SQS(Simple Queue Service)

Amazon Web Services β€” Simple Queue Service

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ°Π΅Ρ‚ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ SQS ΠΈ Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚

1. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ. Π£ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Visibility timeoutΒ». Он опрСдСляСт, сколько ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ максимально ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π»ΠΈΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° сообщСния. По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΎΠ½ Ρ€Π°Π²Π΅Π½ 30 сСкундам. Когда ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ сСрвис Π·Π°Π±ΠΈΡ€Π°Π΅Ρ‚ сообщСниС, ΠΎΠ½ΠΎ пСрСводится Π² статус Β«In FlightΒ» Π½Π° 30 сСкунд. Если Π·Π° это врСмя Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ это сообщСниС ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, ΠΎΠ½ΠΎ возвращаСтся Π² Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ сСрвис смоТСт Π΅Π³ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π΅Ρ‰Π΅ Ρ€Π°Π·.

НСбольшая схСмка Ρ€Π°Π±ΠΎΡ‚Ρ‹.

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. image loader. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-image loader. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° image loader

2. ΠœΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ошибок. Π’ SQS ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ для Β«ΠΌΠ΅Ρ€Ρ‚Π²Ρ‹Ρ…Β» сообщСний(Dead Letter Queue). Π’ΠΎ Π΅ΡΡ‚ΡŒ Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ смог ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ наш сСрвис, Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΏΠΎΡ€ΡΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΠΎ своСму ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ послС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΊΠΎΠ»-Π²Π° Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ сообщСниС ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² Β«ΠΌΠ΅Ρ€Ρ‚Π²ΡƒΡŽΒ» ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. НСудачной ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠΎΠΉ считаСтся истСчСниС Β«Visibility timeoutΒ». Π’ΠΎ Π΅ΡΡ‚ΡŒ Ссли Π·Π° это врСмя Π½Π΅ Π±Ρ‹Π»ΠΎ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ запроса Π½Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅, Ρ‚Π°ΠΊΠΎΠ΅ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΌ ΠΈ вСрнСтся Π² ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ»ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅Ρ‚ Π² Β«ΠΌΠ΅Ρ€Ρ‚Π²ΡƒΡŽΒ».

3. ДСдупликация сообщСний. Π’Π°ΠΊ ΠΆΠ΅ SQS ΠΈΠΌΠ΅Π΅Ρ‚ систСму Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ΠΎΠ². Π£ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ сообщСния Π΅ΡΡ‚ΡŒ Β«Deduplication IdΒ», SQS Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ сообщСниС с
ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΌ Β«Deduplication IdΒ» Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 5 ΠΌΠΈΠ½ΡƒΡ‚. Π’Ρ‹ обязаны Π·Π°Π΄Π°Π²Π°Ρ‚ΡŒ Β«Deduplication IdΒ» Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ сообщСнии ΠΈΠ»ΠΈ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ id Π½Π° основС ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‡Ρ‚ΠΎ Π² Β«Deduplication IdΒ» Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠΏΠ°Π΄Π°Ρ‚ΡŒ Ρ…ΡΡˆ сгСнСрированный исходя ΠΈΠ· вашСго ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Β«Content-Based DeduplicationΒ». ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ Π΄Π΅Π΄ΡƒΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

Notice: Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, Ссли ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Π΄Π²Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Ρ… сообщСния Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠΈ 5 ΠΌΠΈΠ½ΡƒΡ‚ ΠΈ Ρƒ вас Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ Β«Content-Based DeduplicationΒ» SQS Π½Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ Π²Ρ‚ΠΎΡ€ΠΎΠ΅ сообщСниС Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ.

Notice: Π‘ΡƒΠ΄ΡŒΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Ρ‚Π΅Π»ΡŒΠ½Ρ‹, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ Ссли Π½Π° дСвайсС ΠΎΡ‚ΠΏΠ°Π»Π° связь, ΠΈ ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ» ΠΎΡ‚Π²Π΅Ρ‚ ΠΈ Π·Π°Ρ‚Π΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Ρ‹ΠΉ запрос спустя 5 ΠΌΠΈΠ½ΡƒΡ‚, Π΄ΡƒΠ±Π»ΠΈΠΊΠ°Ρ‚ создастся.

4. Long poll. Π”Π»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ опрос. SQS ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚Π°ΠΊΠΎΠΉ Ρ‚ΠΈΠΏ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‚Π°ΠΉΠΌΠ°ΡƒΡ‚ΠΎΠΌ Π² 20 сСкунд. Π§Ρ‚ΠΎ Π½Π°ΠΌ позволяСт ΡΡΠΊΠΎΠ½ΠΎΠΌΠΈΡ‚ΡŒ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ΅ ΠΈ Β«Π΄Π΅Ρ€Π³Π°Π½ΡŒΠ΅Β» сСрвиса.

5. ΠœΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ. Π’Π°ΠΊ ΠΆΠ΅ Amazon прСдоставляСт ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚Ρ€ΠΈΠΊΠΈ ΠΏΠΎ очСрСдям. Π’Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΠ»-Π²ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ…/ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹Ρ…/ΡƒΠ΄Π°Π»Π΅Π½Π½Ρ‹Ρ… сообщСний, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ Π² ΠšΠ‘ этих сообщСний ΠΈ ΠΏΡ€ΠΎΡ‡Π΅Π΅. Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ SQS ΠΊ сСрвису Π»ΠΎΠ³ΠΎΠ² CloudWatch. Π’Π°ΠΌ смоТСтС ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π΅Ρ‰Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅. Π’Π°ΠΊ ΠΆΠ΅ Ρ‚Π°ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ «сигналы Ρ‚Ρ€Π΅Π²ΠΎΠ³ΠΈΒ»(Alarms) ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΡΡ‚Ρ€Π°ΠΈΠ²Π°Ρ‚ΡŒ дСйствия ΠΏΠΎ ΠΊΠ°ΠΊΠΈΠΌ Π»ΠΈΠ±ΠΎ событиям. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΊ SQS. И ДокумСнтация ΠΏΠΎ CloudWatch

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим настройки ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ:

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅:

Message Retention Period β€” ΠΊΠΎΠ»-Π²ΠΎ сСкунд/ΠΌΠΈΠ½ΡƒΡ‚/часов/Π΄Π½Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, сколько ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ сообщСния. Максимально β€” 14 Π΄Π½Π΅ΠΉ.

Maximum Message Size β€” ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ сообщСния Π² KB. Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΎΡ‚ 1KB Π΄ΠΎ 256KB.

Receive Message Wait Time β€” врСмя, сколько Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒΡΡ ΠΊΠΎΠ½Π½Π΅ΠΊΡ‚ Π² случаС, Ссли ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Β«Long pollΒ», для получСния Π½ΠΎΠ²Ρ‹Ρ… сообщСний.

Content-Based Deduplication β€” Ρ„Π»Π°Π³, Ссли установлСн Π² true, Ρ‚ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Β«Deduplication IdΒ» Π² Π²ΠΈΠ΄Π΅ SHA-256 Ρ…ΡΡˆΠ°, сгСнСрированный ΠΈΠ· ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π°.

Настройки Β«ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈΒ»

Use Redrive Policy β€” Ρ„Π»Π°Π³, Ссли установлСн, Ρ‚ΠΎ сообщСния послС Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ.

Dead Letter Queue β€” имя Β«ΠΌΠ΅Ρ€Ρ‚Π²ΠΎΠΉΒ» ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½Π΅ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ сообщСния.

Maximum Receives β€” ΠΊΠΎΠ»-Π²ΠΎ Π½Π΅ΡƒΠ΄Π°Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, послС ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… сообщСниС Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒΡΡ Π² Β«ΠΌΠ΅Ρ€Ρ‚Π²ΡƒΡŽΒ» ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

Notice: Π’Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ всС основныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ вмСстС с ΠΊΠ°ΠΆΠ΄Ρ‹ΠΌ сообщСниСм ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ΅ сообщСниС ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ свой Visibility Timeout ΠΈΠ»ΠΈ Delivery Delay

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎ сами сообщСния ΠΈ ΠΈΡ… свойства:

Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ нСсколько ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²:

Π’Π°ΠΊΠΆΠ΅ Π΅ΡΡ‚ΡŒ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ сообщСний

Атрибуты состоят ΠΈΠ· ΠΈΠΌΠ΅Π½ΠΈ, Ρ‚ΠΈΠΏΠ° ΠΈ значСния.

Notice: ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ максимальноС ΠΊΠΎΠ»-Π²ΠΎ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΎΠ² 10 ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΡΡ‚ΠΈ

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…: ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈ стСк

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. 30 02. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-30 02. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° 30 02

ОписаниС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π³Π΄Π΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ – это ΠΏΠΎΠ»Π΅ любого, Ρ€Π°Π½Π΅Π΅ объявлСнного ΠΈΠ»ΠΈ стандартного, Ρ‚ΠΈΠΏΠ°;

1 способ: адрСсноС ΠΏΠΎΠ»Π΅ ссылаСтся Π½Π° ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅ΠΌΡƒΡŽ структуру.

2 способ: адрСсноС ΠΏΠΎΠ»Π΅ ссылаСтся Π½Π° Ρ€Π°Π½Π΅Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Π½ΡƒΡŽ структуру.

ОписаниС элСмСнтов ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ описанию элСмСнтов Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ объявим ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Ρ‡Π΅Ρ€Π΅Π· объявлСниС Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠ³ΠΎ Π΄Π²ΡƒΠ½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½ΠΎΠ³ΠΎ списка:

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ 2. Π”Π°Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π½Π΅Π½ΡƒΠ»Π΅Π²Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… чисСл. ΠŸΡ€ΠΈΠ·Π½Π°ΠΊΠΎΠΌ ΠΊΠΎΠ½Ρ†Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ являСтся число 0. НайдитС срСди Π½ΠΈΡ… ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ наибольший ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ элСмСнт. Если Ρ‚Π°ΠΊΠΎΠ³ΠΎ элСмСнта Π½Π΅Ρ‚, Ρ‚ΠΎ Π²Ρ‹Π²Π΅Π΄ΠΈΡ‚Π΅ сообщСниС ΠΎΠ± этом.

Π’ Π΄Π°Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ, рассмотрСнныС Ρ€Π°Π½Π΅Π΅. ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ Π³Π»Π°Π²Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ поиска ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ наибольшСго ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ элСмСнта.

ΠšΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½Ρ‹

LIFO (Last Input – First Output) – это ΠΌΠ΅Ρ‚ΠΎΠ΄ доступа ΠΊ элСмСнтам стСка ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΠΏΡ€ΠΈΡˆΠ΅Π» – ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»»

Π’Π΅Ρ€ΡˆΠΈΠ½Π° стСка – это доступный элСмСнт стСка.

ΠšΠΎΠ½Π΅Ρ† ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ – это позиция доступного для вставки Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ элСмСнта.

Начало ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ – это позиция доступного для извлСчСния ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ элСмСнта.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…: стСки ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

ΠΠ²Ρ‚ΠΎΡ€ΠΈΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ

Алгоритмы ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…: стСки ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. stack queue. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-stack queue. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° stack queue

Π’ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… частях ΠΌΡ‹ рассматривали Π±Π°Π·ΠΎΠ²Ρ‹Π΅ структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, ΠΏΠΎ сути, являлись надстройками Π½Π°Π΄ массивом. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ Π΄ΠΎΠ±Π°Π²ΠΈΠΌ ΠΊ коллСкциям простыС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈ посмотрим, ΠΊΠ°ΠΊ это повлияСт Π½Π° ΠΈΡ… возмоТности.

Π‘Ρ‚Π΅ΠΊ β€” это коллСкция, элСмСнты ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ «послСдний вошСл, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅Π»Β» (Last-In-First-Out ΠΈΠ»ΠΈ LIFO). Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ послСднСму Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½ΠΎΠΌΡƒ элСмСнту.

НаиболСС часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π°ΡΡΡ аналогия для объяснСния стСка β€” стопка Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ. Π’Π½Π΅ зависимости ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, сколько Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ Π² стопкС, ΠΌΡ‹ всСгда ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ½ΡΡ‚ΡŒ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ. ЧистыС Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅ кладутся Π½Π° Π²Π΅Ρ€Ρ… стопки, ΠΈ ΠΌΡ‹ всСгда Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠΉ Π±Ρ€Π°Ρ‚ΡŒ Ρ‚Ρƒ Ρ‚Π°Ρ€Π΅Π»ΠΊΡƒ, которая Π±Ρ‹Π»Π° ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π° послСднСй.

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. Fotolia 49997979 XS. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-Fotolia 49997979 XS. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Fotolia 49997979 XS

Если ΠΌΡ‹ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΡ€Π°ΡΠ½ΡƒΡŽ Ρ‚Π°Ρ€Π΅Π»ΠΊΡƒ, Π·Π°Ρ‚Π΅ΠΌ синюю, Π° Π·Π°Ρ‚Π΅ΠΌ Π·Π΅Π»Π΅Π½ΡƒΡŽ, Ρ‚ΠΎ сначала Π½Π°Π΄ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ½ΡΡ‚ΡŒ Π·Π΅Π»Π΅Π½ΡƒΡŽ, ΠΏΠΎΡ‚ΠΎΠΌ синюю, ΠΈ, Π½Π°ΠΊΠΎΠ½Π΅Ρ†, ΠΊΡ€Π°ΡΠ½ΡƒΡŽ. Π“Π»Π°Π²Π½ΠΎΠ΅, Ρ‡Ρ‚ΠΎ Π½Π°Π΄ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ β€” Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ всСгда ставятся ΠΈ Π½Π° Π²Π΅Ρ€Ρ… стопки. Когда ΠΊΡ‚ΠΎ-Ρ‚ΠΎ Π±Π΅Ρ€Π΅Ρ‚ Ρ‚Π°Ρ€Π΅Π»ΠΊΡƒ, ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ снимаСт Π΅Π΅ свСрху. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ Ρ€Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π² порядкС, ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ Ρ‚ΠΎΠΌΡƒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΡΡ‚Π°Π²ΠΈΠ»ΠΈΡΡŒ.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ стСк, Π²Π²Π΅Π΄Π΅ΠΌ нСсколько Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ добавлСния элСмСнта Π½Π° стСк называСтся Β«pushΒ», удалСния β€” Β«popΒ». ПослСдний Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ элСмСнт называСтся Π²Π΅Ρ€Ρ…ΡƒΡˆΠΊΠΎΠΉ стСка, ΠΈΠ»ΠΈ Β«topΒ», ΠΈ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Β«peekΒ». Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим Π½Π° Π·Π°Π³ΠΎΡ‚ΠΎΠ²ΠΊΡƒ класса, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅Π³ΠΎ стСк.

Класс Stack

ΠœΠ΅Ρ‚ΠΎΠ΄ Push

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ связный список для хранСния элСмСнтов, ΠΌΠΎΠΆΠ½ΠΎ просто Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Π² ΠΊΠΎΠ½Π΅Ρ† списка.

ΠœΠ΅Ρ‚ΠΎΠ΄ Pop

Push добавляСт элСмСнты Π² ΠΊΠΎΠ½Π΅Ρ† списка, поэтому Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ ΠΈΡ… Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ с ΠΊΠΎΠ½Ρ†Π°. Π’ случаС, Ссли список пуст, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹Π±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒΡΡ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ Peek

ΠœΠ΅Ρ‚ΠΎΠ΄ Count

Π—Π°Ρ‡Π΅ΠΌ Π½Π°ΠΌ Π·Π½Π°Ρ‚ΡŒ, сколько элСмСнтов находится Π² стСкС, Ссли ΠΌΡ‹ всС Ρ€Π°Π²Π½ΠΎ Π½Π΅ ΠΈΠΌΠ΅Π΅ΠΌ ΠΊ Π½ΠΈΠΌ доступа? Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ этого поля ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ, Π΅ΡΡ‚ΡŒ Π»ΠΈ элСмСнты Π½Π° стСкС ΠΈΠ»ΠΈ ΠΎΠ½ пуст. Π­Ρ‚ΠΎ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, учитывая, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄ Pop ΠΊΠΈΠ΄Π°Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ польской записи

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ использования стСка β€” ΠΊΠ°Π»ΡŒΠΊΡƒΠ»ΡΡ‚ΠΎΡ€ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ польской, ΠΈΠ»ΠΈ постфиксной, записи. Π’ Π½Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ записываСтся послС своих ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ². Π’ΠΎ Π΅ΡΡ‚ΡŒ, ΠΌΡ‹ пишСм:

Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами, вмСсто Β«4 + 2Β» ΠΌΡ‹ запишСм Β«4 2 +Β». Если Π²Π°ΠΌ интСрСсно происхоТдСниС ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ польской записи ΠΈ Π΅Π΅ названия, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этом Π½Π° Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΠΈΠ»ΠΈ Π² поисковикС.

Π’ΠΎ, ΠΊΠ°ΠΊ вычисляСтся обратная польская запись ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ стСк Ρ‚Π°ΠΊ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΏΡ€ΠΈ Π΅Π΅ использовании, Ρ…ΠΎΡ€ΠΎΡˆΠΎ Π²ΠΈΠ΄Π½ΠΎ ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

Π’ΠΎ Π΅ΡΡ‚ΡŒ, для выраТСния Β«4 2 +Β» дСйствия Π±ΡƒΠ΄ΡƒΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅:

Π’ ΠΊΠΎΠ½Ρ†Π΅ Π½Π° стСкС окаТСтся ΠΎΠ΄Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ β€” 6.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠΈ Π½Π° стСки. Они Ρ‚Π°ΠΊΠΆΠ΅ Π½Π΅ Π΄Π°ΡŽΡ‚ доступа ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΌΡƒ элСмСнту, Π½ΠΎ, Π² ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠ΅ ΠΎΡ‚ стСка, элСмСнты кладутся (enqueue) ΠΈ Π·Π°Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ (dequeue) с Ρ€Π°Π·Π½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†ΠΎΠ². Π’Π°ΠΊΠΎΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ называСтся Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ вошСл, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅Π»Β» (First-In-First-Out ΠΈΠ»ΠΈ FIFO). Π’ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π±ΠΈΡ€Π°Ρ‚ΡŒ элСмСнты ΠΈΠ· ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π² Ρ‚ΠΎΠΌ ΠΆΠ΅ порядкС, Ρ‡Ρ‚ΠΎ ΠΈ ΠΊΠ»Π°Π»ΠΈ. Как Ρ€Π΅Π°Π»ΡŒΠ½Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ»ΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€.

ΠžΡ‡Π΅Ρ€Π΅Π΄ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ… для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π±ΡƒΡ„Π΅Ρ€Π°, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ элСмСнт для ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, сохраняя порядок поступлСния. НапримСр, Ссли Π±Π°Π·Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎ соСдинСниС, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚, ΠΊΠ°ΠΊ Π½ΠΈ странно, ΠΆΠ΄Π°Ρ‚ΡŒ своСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° доступ ΠΊ Π‘Π”.

Класс Queue

ΠœΠ΅Ρ‚ΠΎΠ΄ Enqueue

НовыС элСмСнты ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ°ΠΊ Π² Π½Π°Ρ‡Π°Π»ΠΎ списка, Ρ‚Π°ΠΊ ΠΈ Π² ΠΊΠΎΠ½Π΅Ρ†. Π’Π°ΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ элСмСнты Π΄ΠΎΡΡ‚Π°Π²Π°Π»ΠΈΡΡŒ с ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½ΠΎΠ³ΠΎ края. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты Π² Π½Π°Ρ‡Π°Π»ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ списка.

ΠœΠ΅Ρ‚ΠΎΠ΄ Dequeue

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΌΡ‹ вставляСм элСмСнты Π² Π½Π°Ρ‡Π°Π»ΠΎ списка, ΡƒΠ±ΠΈΡ€Π°Ρ‚ΡŒ ΠΌΡ‹ ΠΈΡ… Π±ΡƒΠ΄Π΅ΠΌ с ΠΊΠΎΠ½Ρ†Π°. Если список пуст, кидаСтся ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.

ΠœΠ΅Ρ‚ΠΎΠ΄ Peek

ΠœΠ΅Ρ‚ΠΎΠ΄ Count

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ (Double-ended queue), ΠΈΠ»ΠΈ Π΄Π΅ΠΊ (Deque), Ρ€Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’ Π΄Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈΠ»ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΊΠ°ΠΊ с Π½Π°Ρ‡Π°Π»Π°, Ρ‚Π°ΠΊ ΠΈ с ΠΊΠΎΠ½Ρ†Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Π·Π°Π΄Π°Ρ‡Π°Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ выполнСния ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈΠ»ΠΈ рСализация Π΄Ρ€ΡƒΠ³ΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ…. ПозТС ΠΌΡ‹ рассмотрим Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ двустороннСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Класс Deque

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekLast

ΠœΠ΅Ρ‚ΠΎΠ΄ Count

ΠŸΡ€ΠΈΠΌΠ΅Ρ€: рСализация стСка

Двусторонняя ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ…. Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка с Π΅Π΅ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ.

Π£ вас, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π²ΠΎΠ·Π½ΠΈΠΊ вопрос, Π·Π°Ρ‡Π΅ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ стСк Π½Π° основС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ вмСсто связного списка. ΠŸΡ€ΠΈΡ‡ΠΈΠ½Ρ‹ Π΄Π²Π΅: ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΊΠΎΠ΄Π°. Π£ связного списка Π΅ΡΡ‚ΡŒ Π½Π°ΠΊΠ»Π°Π΄Π½Ρ‹Π΅ расходы Π½Π° созданиС ΡƒΠ·Π»ΠΎΠ² ΠΈ Π½Π΅Ρ‚ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: элСмСнты ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ располоТСны Π² любом мСстС памяти, Ρ‡Ρ‚ΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ большоС количСство ΠΏΡ€ΠΎΠΌΠ°Ρ…ΠΎΠ² ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ процСссоров. Π‘ΠΎΠ»Π΅Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ рСализация двустороннСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ массива для хранСния элСмСнтов.

Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, рСализация стСка ΠΈΠ»ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ массива β€” нСпростая Π·Π°Π΄Π°Ρ‡Π°, Π½ΠΎ такая рСализация двустороннСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ использованиС Π΅Π΅ Π² качСствС основы для Π΄Ρ€ΡƒΠ³ΠΈΡ… структур Π΄Π°Π½Π½Ρ‹Ρ… даст Π½Π°ΠΌ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹ΠΉ плюс ΠΊ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ сниТаСт ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ.

ПозТС ΠΌΡ‹ посмотрим Π½Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с использованиСм массива, Π½ΠΎ сначала Π΄Π°Π²Π°ΠΉΡ‚Π΅ взглянСм Π½Π° класс стСка с использованиСм двустороннСй ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ:

Π₯Ρ€Π°Π½Π΅Π½ΠΈΠ΅ элСмСнтов Π² массивС

Как ΡƒΠΆΠ΅ Π±Ρ‹Π»ΠΎ упомянуто, Ρƒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с использованиСм массива Π΅ΡΡ‚ΡŒ свои прСимущСства. Она выглядит простой, Π½ΠΎ Π½Π° самом Π΄Π΅Π»Π΅ Π΅ΡΡ‚ΡŒ ряд нюансов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°Π΄ΠΎ ΡƒΡ‡Π΅ΡΡ‚ΡŒ.

Π”Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΡƒΡ‚ΡŒ, ΠΈ Π½Π° ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π½Π°ΠΌ понадобится информация ΠΎΠ± ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива ΠΈΠ· ΠΏΡ€ΠΎΡˆΠ»ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΎ динамичСских массивах.

ΠŸΡ€ΠΈ создании ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Ρƒ Π½Π΅Π΅ Π²Π½ΡƒΡ‚Ρ€ΠΈ создаСтся массив Π½ΡƒΠ»Π΅Π²ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹. ΠšΡ€Π°ΡΠ½Ρ‹Π΅ Π±ΡƒΠΊΠ²Ρ‹ Β«hΒ» ΠΈ Β«tΒ» ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‚ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ _head ΠΈ _tail соотвСтствСнно.

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 015. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 015. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 015

ДобавляСм элСмСнт Π² Π½Π°Ρ‡Π°Π»ΠΎ

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 016. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 016. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 016

ДобавляСм элСмСнт Π² ΠΊΠΎΠ½Π΅Ρ†

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 017. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 017. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 017

ДобавляСм Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ элСмСнт Π² Π½Π°Ρ‡Π°Π»ΠΎ

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅: индСкс Β«Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ пСрСскочил Π² Π½Π°Ρ‡Π°Π»ΠΎ списка. Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½ ΠΏΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° DequeueFirst β€” 0 (индСкс 3).

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 018. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 018. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 018

И Π΅Ρ‰Π΅ ΠΎΠ΄ΠΈΠ½ Π² ΠΊΠΎΠ½Π΅Ρ†

Массив Π·Π°ΠΏΠΎΠ»Π½Π΅Π½, поэтому ΠΏΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнта ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 019. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 019. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 019

ДобавляСм Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ† Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ массива

Π’Π΅ΠΏΠ΅Ρ€ΡŒ посмотрим, Ρ‡Ρ‚ΠΎ происходит ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ элСмСнта:

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 020. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 020. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 020

УдаляСм элСмСнт ΠΈΠ· Π½Π°Ρ‡Π°Π»Π°

Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. data structures 021. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅ Ρ„ΠΎΡ‚ΠΎ. Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅-data structures 021. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° Π’ Ρ‡Π΅ΠΌ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ особСнности ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠ΅. ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° data structures 021

УдаляСм элСмСнт с ΠΊΠΎΠ½Ρ†Π°

ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚: Π²Π½Π΅ зависимости ΠΎΡ‚ вмСстимости ΠΈΠ»ΠΈ заполнСнности Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ массива, логичСски, содСрТимоС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ β€” элСмСнты ΠΎΡ‚ Β«Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» Π΄ΠΎ «хвоста» с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Β«Π·Π°ΠΊΠΎΠ»ΡŒΡ†ΠΎΠ²Π°Π½Π½ΠΎΡΡ‚ΠΈΒ». Π’Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Ρ‚Π°ΠΊΠΆΠ΅ называСтся Β«ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹ΠΌ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌΒ».

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π΄Π°Π²Π°ΠΉΡ‚Π΅ посмотрим Π½Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ.

Класс Deque (с использованиСм массива)

Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π° основС массива Ρ‚Π°ΠΊΠΎΠΉ ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π² случаС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ‡Π΅Ρ€Π΅Π· связный список. ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π΅Π³ΠΎ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ. Однако, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ список Π±Ρ‹Π» Π·Π°ΠΌΠ΅Π½Π΅Π½ Π½Π° массив, Ρƒ нас добавились Π½ΠΎΠ²Ρ‹Π΅ поля β€” сам массив, Π΅Π³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° «хвост» ΠΈ Β«Π³ΠΎΠ»ΠΎΠ²ΡƒΒ» ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ.

Алгоритм роста

Когда свободноС мСсто Π²ΠΎ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΌ массивС заканчиваСтся, Π΅Π³ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ, ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ элСмСнты ΠΈ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° «хвост» ΠΈ Β«Π³ΠΎΠ»ΠΎΠ²ΡƒΒ». Π­Ρ‚Π° опСрация производится ΠΏΡ€ΠΈ нСобходимости Π²ΠΎ врСмя добавлСния элСмСнта. ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ startingIndex ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ, сколько ΠΏΠΎΠ»Π΅ΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ пустыми (Π² случаС добавлСния Π² Π½Π°Ρ‡Π°Π»ΠΎ).

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π° Ρ‚ΠΎ, ΠΊΠ°ΠΊ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΠ³Π΄Π° приходится ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ Π² Π½Π°Ρ‡Π°Π»ΠΎ массива ΠΏΡ€ΠΈ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π΅ ΠΎΡ‚ Β«Π³ΠΎΠ»ΠΎΠ²Ρ‹Β» ΠΊ «хвосту».

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekLast

ΠœΠ΅Ρ‚ΠΎΠ΄ Count

ΠŸΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½ΠΈΠ΅ слСдуСт

Π’ΠΎΡ‚ ΠΌΡ‹ ΠΈ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ нашСго Ρ†ΠΈΠΊΠ»Π° статСй. Π’ Π½Π΅ΠΉ ΠΌΡ‹ рассмотрСли стСки ΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Ρ€Π°Π· ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ Π±ΠΈΠ½Π°Ρ€Π½Ρ‹ΠΌ Π΄Π΅Ρ€Π΅Π²ΡŒΡΠΌ поиска.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *