Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ стСк

И ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ ΡΡ‚Ρ€Π°ΡˆΠ΅Π½ стСк-ΠΎΠ²Π΅Ρ€Ρ„Π»ΠΎΡƒ.

ΠŸΠΎΡΡ‚Π΅ΠΏΠ΅Π½Π½ΠΎ осваиваСм способы ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ хранСния Π΄Π°Π½Π½Ρ‹Ρ…. Π£ΠΆΠ΅ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎ Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠ΅ΠΌ ΠΏΡ€ΠΎ стСки. Π­Ρ‚ΠΎ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‡Π΅Ρ‚ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ ΡΠ΅Ρ€ΡŒΡ‘Π·Π½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² ИВ: ΠΎΠ΄Π½Π° ΠΈΠ· Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ, которая влияСт Π½Π° качСство вашСго ΠΊΠΎΠ΄Π°, Π½ΠΎ Π½Π΅ касаСтся ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ языка программирования.

👉 Π‘Ρ‚Π΅ΠΊ β€” это ΠΎΠ΄Π½Π° ΠΈΠ· структур Π΄Π°Π½Π½Ρ‹Ρ…. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… β€” это Ρ‚ΠΎ, ΠΊΠ°ΠΊ хранятся Π΄Π°Π½Π½Ρ‹Π΅: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, связанныС списки, Π΄Π΅Ρ€Π΅Π²ΡŒΡ, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, мноТСства, Ρ…Π΅Ρˆ-Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹, ΠΊΠ°Ρ€Ρ‚Ρ‹ ΠΈ Π΄Π°ΠΆΠ΅ ΠΊΡƒΡ‡ΠΈ (heap).

Как устроСн стСк

Π‘Ρ‚Π΅ΠΊ Ρ…Ρ€Π°Π½ΠΈΡ‚ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Ρ…. Бвязаны Π΄Π°Π½Π½Ρ‹Π΅ Ρ‚Π°ΠΊ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Ρ‚ΠΎΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ. Π­Ρ‚ΠΎ линСйная связь β€” Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ΄ΡƒΡ‚ Π΄Ρ€ΡƒΠ³ Π·Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΈ Π½ΡƒΠΆΠ½ΠΎ Π±Ρ€Π°Ρ‚ΡŒ ΠΈΡ… ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Из сСрСдины стСка Π±Ρ€Π°Ρ‚ΡŒ нСльзя.

👉 Π“Π»Π°Π²Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Ρ€Π°Π±ΠΎΡ‚Ρ‹ стСка β€” Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΏΠ°Π»ΠΈ Π² стСк Π½Π΅Π΄Π°Π²Π½ΠΎ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ. Π§Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΠΎΠΏΠ°Π» β€” Ρ‚Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ. ПослС использования элСмСнт стСка исчСзаСт, ΠΈ Π²Π΅Ρ€Ρ…Π½ΠΈΠΌ становится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠšΠ»Π°ΡΡΠΈΡ‡Π΅ΡΠΊΠΈΠΉ способ объяснСния ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² стСка Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ: ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠ΅Ρ‚Π΅ посуду ΠΈ складываСтС ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ чистыС Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ стопкой Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°. КаТдая новая Ρ‚Π°Ρ€Π΅Π»ΠΊΠ° β€” это элСмСнт стСка, Π° Π²Ρ‹ просто добавляСтС ΠΈΡ… ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² стСк.

Когда ΠΊΠΎΠΌΡƒ-Ρ‚ΠΎ понадобится Ρ‚Π°Ρ€Π΅Π»ΠΊΠ°, ΠΎΠ½ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ Π±Ρ€Π°Ρ‚ΡŒ Π΅Ρ‘ снизу ΠΈΠ»ΠΈ ΠΈΠ· сСрСдины β€” ΠΎΠ½ Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ ΠΏΠ΅Ρ€Π²ΡƒΡŽ свСрху, ΠΏΠΎΡ‚ΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

🤔 Π•ΡΡ‚ΡŒ структура Π΄Π°Π½Π½Ρ‹Ρ…, похоТая Π½Π° стСк, β€” называСтся ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΈΠ»ΠΈ queue. Если Π² стСкС ΠΊΡ‚ΠΎ послСдний ΠΏΡ€ΠΈΡˆΡ‘Π», Ρ‚ΠΎΠ³ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π·Π°Π±Π΅Ρ€ΡƒΡ‚, Ρ‚ΠΎ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π°ΠΎΠ±ΠΎΡ€ΠΎΡ‚: ΠΊΡ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ ΠΏΡ€ΠΈΡˆΡ‘Π», Ρ‚ΠΎΡ‚ Ρ€Π°Π½ΡŒΡˆΠ΅ ΡƒΡˆΡ‘Π». МоТно ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅: ΠΊΡ‚ΠΎ Ρ€Π°Π½ΡŒΡˆΠ΅ Π΅Ρ‘ занял, Ρ‚ΠΎΡ‚ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π΄ΠΎΡˆΡ‘Π» Π΄ΠΎ кассы. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” это Ρ‚ΠΎΠΆΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Π΄Π°Π½Π½Ρ‹Ρ…, Π½ΠΎ обрабатываСтся ΠΏΠΎ-Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ.

Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅ΡΡ‚ΡŒ Π΄Π²Π° Π²ΠΈΠ΄Π° стСка β€” стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ стСк Π΄Π°Π½Π½Ρ‹Ρ….

Когда Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ β€” ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, β€” Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Ρƒ Π½ΡƒΠΆΠ½ΠΎ ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Π³Π΄Π΅ ΠΎΠ½ прСрвался Π² основном ΠΊΠΎΠ΄Π΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ. ПослС выполнСния ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ основной ΠΊΠΎΠ΄. ΠŸΡ€ΠΈ этом Ссли ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΈΡ… Ρ‚ΠΎΠΆΠ΅ Π½ΡƒΠΆΠ½ΠΎ Π·Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π² основной ΠΊΠΎΠ΄.

Π§Ρ‚ΠΎΠ±Ρ‹ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти, Π³Π΄Π΅ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ Ρ‚ΠΎΡ‡ΠΊΠ°Ρ… ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π°ΠΌΠΈ ΠΊΠΎΠ΄Π°.

Допустим, Ρƒ нас Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΅ΡΡ‚ΡŒ Ρ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΈΡ‡Ρ‘ΠΌ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ… Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ. НарисуСм, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ понятнСС:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° запускаСтся, ΠΏΠΎΡ‚ΠΎΠΌ ΠΈΠ΄Ρ‘Ρ‚ Π²Ρ‹Π·ΠΎΠ² синСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Она выполняСтся, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ с Ρ‚ΠΎΠ³ΠΎ мСста, Π³Π΄Π΅ ΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΈΠ»Π°ΡΡŒ. ΠŸΠΎΡ‚ΠΎΠΌ выполняСтся зСлёная функция, которая Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ. Пока красная Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΆΠ΄ΡƒΡ‚. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ красная Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»Π°ΡΡŒ β€” продолТаСтся зСлёная, Π° послС Π΅Ρ‘ окончания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ‚ свою Ρ€Π°Π±ΠΎΡ‚Ρƒ с Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ мСста.

А Π²ΠΎΡ‚ ΠΊΠ°ΠΊ стСк ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ это Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° дошла Π΄ΠΎ синСй Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, сохранила Ρ‚ΠΎΡ‡ΠΊΡƒ, ΠΊΡƒΠ΄Π° Π΅ΠΉ Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ закончится функция, ΠΈ Ссли функция Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΠΊΠ°ΠΊΠΈΠ΅-Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Ρ‚ΠΎΠΆΠ΅ ΠΈΡ… ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚. Когда синяя функция закончится ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ элСмСнт стСка, ΠΎΠ½ автоматичСски исчСзнСт. Π‘Ρ‚Π΅ΠΊ снова пустой.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π‘ Π·Π΅Π»Ρ‘Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ всё Ρ‚ΠΎ ΠΆΠ΅ самоС β€” Π² стСк заносится Ρ‚ΠΎΡ‡ΠΊΠ° Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π°, ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π·Π΅Π»Ρ‘Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ. Но Π²Π½ΡƒΡ‚Ρ€ΠΈ Π½Π΅Ρ‘ ΠΌΡ‹ Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ ΠΊΡ€Π°ΡΠ½ΡƒΡŽ, ΠΈ Π²ΠΎΡ‚ Ρ‡Ρ‚ΠΎ происходит:

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΡ€ΠΈ Π²Ρ‹Π·ΠΎΠ²Π΅ красной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² стСк помСщаСтся Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт с ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚ΠΎΡ‡ΠΊΠ΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π° красная функция Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ ΠΈΠ· стСка адрСс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ Π²Π΅Ρ€Π½Ρ‘Ρ‚ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ снова Π·Π΅Π»Ρ‘Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π° красный элСмСнт исчСзнСт. Когда ΠΈ зСлёная Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ, Ρ‚ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ ΠΈΠ· стСка Π²ΠΎΠ·ΡŒΠΌΡ‘Ρ‚ Π½ΠΎΠ²Ρ‹ΠΉ адрСс Π²ΠΎΠ·Π²Ρ€Π°Ρ‚Π° ΠΈ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ Ρ€Π°Π±ΠΎΡ‚Ρƒ со старого мСста.

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ стСка

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

ΠŸΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ β€” это ΠΏΠ»ΠΎΡ…ΠΎ: Π΄Π°Π½Π½Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°Π»Π΅Π·Π°Ρ‚ΡŒ Π² Ρ‡ΡƒΠΆΡƒΡŽ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ сСбя вмСсто ΠΏΡ€Π΅ΠΆΠ½ΠΈΡ… Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ сбою Π² Ρ€Π°Π±ΠΎΡ‚Π΅ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈΠ»ΠΈ самого ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°. Π•Ρ‰Ρ‘ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π²Π½Π΅Π΄Ρ€ΠΈΡ‚ΡŒ Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ врСдоносный ΠΊΠΎΠ΄: Ссли ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΏΠ»ΠΎΡ…ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ со стСком, ΠΌΠΎΠΆΠ½ΠΎ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ Ρ‡Ρ‚ΠΎ-Π½ΠΈΠ±ΡƒΠ΄ΡŒ врСдоносноС.

Π‘Ρ‚Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ…

Π‘Ρ‚Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆ Π½Π° стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ²: ΠΏΠΎ сути, это ΠΎΠ΄Π½Π° большая пСрСмСнная, похоТая Π½Π° список ΠΈΠ»ΠΈ массив. Π•Π³ΠΎ Ρ‡Π°Ρ‰Π΅ всСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ слоТными Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ…: Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, быстрого ΠΎΠ±Ρ…ΠΎΠ΄Π° Π΄Π΅Ρ€Π΅Π²ΡŒΠ΅Π², поиска всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΎΠ² ΠΏΠΎ Π³Ρ€Π°Ρ„Ρƒ, β€” ΠΈ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π·Π²Π΅Ρ‚Π²Π»Ρ‘Π½Π½Ρ‹Ρ… ΠΎΠ΄Π½ΠΎΡ‚ΠΈΠΏΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ….

Π‘Ρ‚Π΅ΠΊ Π΄Π°Π½Π½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΏΠΎ Ρ‚Π°ΠΊΠΎΠΌΡƒ ΠΆΠ΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ, ΠΊΠ°ΠΊ ΠΈ стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² β€” элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ послСдним, Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ.

Π§Ρ‚ΠΎ дальшС

А дальшС ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«ΠΊΡƒΡ‡Π°Β». Π”Π°, Ρ‚Π°ΠΊΠΎΠΉ Π΅ΡΡ‚ΡŒ, ΠΈ с Π½ΠΈΠΌ Ρ‚ΠΎΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ эффСктивно Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ. Π‘Ρ‚Π΅ΠΉ Ρ‚ΡŽΠ½Π΅Π΄.

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π‘Ρ‚Π΅ΠΊ (ΠΎΡ‚ Π°Π½Π³Π». stack β€” стопка) β€” структура Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΈΠ· сСбя упорядочСнный Π½Π°Π±ΠΎΡ€ элСмСнтов, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… элСмСнтов ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… производится с ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½Ρ†Π°, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠ³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ стСка. ΠŸΡ€ΠΈΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΠΈΠ· стСка удаляСтся элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½ Ρ‚ΡƒΠ΄Π° послСдним, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² стСкС рСализуСтся стратСгия «послСдним вошСл β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β» (last-in, first-out β€” LIFO). ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ стСка Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ стопка Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ: ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Π²Ρ‹Ρ‚Π°Ρ‰ΠΈΡ‚ΡŒ Ρ‚Π°Ρ€Π΅Π»ΠΊΡƒ, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ½ΡΡ‚ΡŒ всС Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ Π²Ρ‹ΡˆΠ΅. ВСрнСмся ΠΊ описанию ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ стСка:

Π Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Для стСка с [math]n[/math] элСмСнтами трСбуСтся [math]O(n)[/math] памяти, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° Π½ΡƒΠΆΠ½Π° лишь для хранСния самих элСмСнтов.

На массивС [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

ΠŸΠ΅Ρ€Π΅Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ стСка Π²Ρ‹Π΄Π΅Π»ΠΈΠΌ ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ поля:

ΠšΠ°ΠΆΠ΄ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ Π½Π°Π΄ стСком ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ нСсколькими строками ΠΊΠΎΠ΄Π°:

На ΡΠ°ΠΌΠΎΡ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰Π΅ΠΌΡΡ массивС [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π’ΠΎΠ·ΠΌΠΎΠΆΠ½Π° рСализация стСка Π½Π° динамичСском массивС, Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ‡Π΅Π³ΠΎ появляСтся сущСствСнноС прСимущСство Π½Π°Π΄ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ: ΠΏΡ€ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ push ΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ смоТСм Π²Ρ‹ΠΉΡ‚ΠΈ Π·Π° Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ массива, Ρ‚Π΅ΠΌ самым ΠΈΠ·Π±Π΅ΠΆΠΈΠΌ ошибки исполнСния.

На спискС [ ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ]

Π‘Ρ‚Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π½Π° спискС. Для этого Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ стСка Π½Π° созданном спискС. НиТС прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка Π½Π° односвязном спискС. Π‘Ρ‚Π΅ΠΊ Π±ΡƒΠ΄Π΅ΠΌ «Π΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ» Π·Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ. Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒΡΡ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты посрСдством ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ [math] \mathtt [/math] Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠ΅Ρ€Π΅Π΄ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ, сами ΠΏΡ€ΠΈ этом ΡΡ‚Π°Π½ΠΎΠ²ΡΡΡŒ Π½ΠΎΠ²ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ, Π° элСмСнтом для ΠΈΠ·ΡŠΡΡ‚ΠΈΡ ΠΈΠ· стСка с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ [math] \mathtt [/math] Π±ΡƒΠ΄Π΅Ρ‚ тСкущая Π³ΠΎΠ»ΠΎΠ²Π°. ПослС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ [math] \mathtt [/math] тСкущая Π³ΠΎΠ»ΠΎΠ²Π° ΡƒΠΆΠ΅ станСт старой ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом Π·Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π½Ρ‹ΠΌ, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ссылка Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΡΡ‚Π°Ρ€ΡƒΡŽ Π³ΠΎΠ»ΠΎΠ²Ρƒ. ПослС Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ [math] \mathtt [/math] Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π° ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π΅Π½Π° информация, хранящаяся Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Π³ΠΎΠ»ΠΎΠ²Π΅. Π‘Π°ΠΌΠ° Π³ΠΎΠ»ΠΎΠ²Π° Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠ·ΡŠΡΡ‚Π° ΠΈΠ· стСка, Π° Π½ΠΎΠ²ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ станСт элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ слСдовал Π·Π° ΠΈΠ·ΡŠΡΡ‚ΠΎΠΉ Π³ΠΎΠ»ΠΎΠ²ΠΎΠΉ.

Π—Π°Π²Π΅Π΄Π΅ΠΌ конструктор Π²ΠΈΠ΄Π° ListItem(next : ListItem, data : T)

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

О стСкС простыми словами β€” для студСнтов ΠΈ просто Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

ΠŸΡ€ΠΈΠ²Π΅Ρ‚, я студСнт Π²Ρ‚ΠΎΡ€ΠΎΠ³ΠΎ курса тСхничСского унивСрситСта. ПослС пропуска Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΠ°Ρ€ программирования ΠΏΠΎ ΡΠΎΡΡ‚ΠΎΡΠ½ΠΈΡŽ Π·Π΄ΠΎΡ€ΠΎΠ²ΡŒΡ, я столкнулся с Π½Π΅ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ΠΌ Ρ‚Π°ΠΊΠΈΡ… Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Β«Π‘Ρ‚Π΅ΠΊΒ» ΠΈ Β«ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒΒ». ΠŸΡƒΡ‚Π΅ΠΌ ΠΏΡ€ΠΎΠ± ΠΈ ошибок, спустя нСсколько Π΄Π½Π΅ΠΉ, Π΄ΠΎ мСня Π½Π°ΠΊΠΎΠ½Π΅Ρ† дошло, Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅ ΠΈ с Ρ‡Π΅ΠΌ это Сдят. Π§Ρ‚ΠΎΠ±Ρ‹ Ρƒ вас ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π½Π΅ заняло ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π² Π΄Π°Π½Π½ΠΎΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ я расскаТу ΠΎ Ρ‚ΠΎΠΌ Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«Π‘Ρ‚Π΅ΠΊΒ», ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ ΠΈ Π½Π° ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… я понял Ρ‡Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅. Если Π²Π°ΠΌ понравится, я Π½Π°ΠΏΠΈΡˆΡƒ Π²Ρ‚ΠΎΡ€ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ, которая Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Ρ‚Ρ€Π°Π³ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ понятиС, ΠΊΠ°ΠΊ Β«ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒΒ»

ВСория

На Π’ΠΈΠΊΠΈΠΏΠ΅Π΄ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стСка Π·Π²ΡƒΡ‡ΠΈΡ‚ Ρ‚Π°ΠΊ:

Π‘Ρ‚Π΅ΠΊ (Π°Π½Π³Π». stack β€” стопка; читаСтся стэк) β€” абстрактный Ρ‚ΠΈΠΏ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ собой список элСмСнтов, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ LIFO (Π°Π½Π³Π». last in β€” first out, «послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β»).

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅, Π½Π° Ρ‡Π΅ΠΌ Π±Ρ‹ я Ρ…ΠΎΡ‚Π΅Π» Π·Π°ΠΎΡΡ‚Ρ€ΠΈΡ‚ΡŒ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, это прСдставлСниС стСка Π² Π²ΠΈΠ΄Π΅ Π²Π΅Ρ‰Π΅ΠΉ ΠΈΠ· ΠΆΠΈΠ·Π½ΠΈ. ΠŸΠ΅Ρ€Π²ΠΎΠΉ Π½Π° ΡƒΠΌ ΠΌΠ½Π΅ ΠΏΡ€ΠΈΡˆΠ»Π° интСрпрСтация Π² Π²ΠΈΠ΄Π΅ стопки ΠΊΠ½ΠΈΠ³, Π³Π΄Π΅ вСрхняя ΠΊΠ½ΠΈΠ³Π° β€” это Π²Π΅Ρ€ΡˆΠΈΠ½Π°.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

На самом Π΄Π΅Π»Π΅ стСк ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ стопки Π»ΡŽΠ±Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡŒ Ρ‚ΠΎ стопка листов, Ρ‚Π΅Ρ‚Ρ€Π°Π΄Π΅ΠΉ, Ρ€ΡƒΠ±Π°ΡˆΠ΅ΠΊ ΠΈ Ρ‚ΠΎΠΌΡƒ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅, Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ с ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ я Π΄ΡƒΠΌΠ°ΡŽ Π±ΡƒΠ΄Π΅Ρ‚ самым ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΌ.

Π˜Ρ‚Π°ΠΊ, ΠΈΠ· Ρ‡Π΅Π³ΠΎ ΠΆΠ΅ состоит стСк.

Π‘Ρ‚Π΅ΠΊ состоит ΠΈΠ· ячССк(Π² ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ β€” это ΠΊΠ½ΠΈΠ³ΠΈ), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ прСдставлСны Π² Π²ΠΈΠ΄Π΅ структуры, содСрТащСй ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½ΠΎΠΉ структуры Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт.
Π‘Π»ΠΎΠΆΠ½ΠΎ? НС Π±Π΅Π΄Π°, Π΄Π°Π²Π°ΠΉΡ‚Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚ΡŒΡΡ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

На Π΄Π°Π½Π½ΠΎΠΉ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ΅ схСматично ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ стСк. Π‘Π»ΠΎΠΊ Π²ΠΈΠ΄Π° Β«Π”Π°Π½Π½Ρ‹Π΅/*nextΒ» ΠΈ Π΅ΡΡ‚ΡŒ наша ячСйка. *next, ΠΊΠ°ΠΊ ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт, Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ *next Ρ…Ρ€Π°Π½ΠΈΡ‚ адрСс ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ячСйки. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ *TOP ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСк, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π΅Ρ‘ адрСс.

Π‘ Ρ‚Π΅ΠΎΡ€ΠΈΠ΅ΠΉ Π·Π°ΠΊΠΎΠ½Ρ‡ΠΈΠ»ΠΈ, ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ΅.

ΠŸΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°

Для Π½Π°Ρ‡Π°Π»Π° Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ структуру, которая Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ²Π»ΡΡ‚ΡŒΡΡ нашСй «ячСйкой»

Новичкам Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π΅ понятно, Π·Π°Ρ‡Π΅ΠΌ наш ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ β€” Ρ‚ΠΈΠΏΠ° comp, Ρ‚ΠΎΡ‡Π½Π΅Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Ρ‚ΠΈΠΏΠ° структуры comp. Объясню, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ *next ΠΌΠΎΠ³ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ структуру comp, Π΅ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΡ‚ΡŒ Ρ‚ΠΈΠΏ этой структуры. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ.

ПослС Ρ‚ΠΎΠ³ΠΎ ΠΊΠ°ΠΊ Ρƒ нас Π·Π°Π΄Π°Π½Π° Β«Π―Ρ‡Π΅ΠΉΠΊΠ°Β», ΠΏΠ΅Ρ€Π΅ΠΉΠ΄Π΅ΠΌ ΠΊ созданию Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Ѐункция создания Β«Π‘Ρ‚Π΅ΠΊΠ°Β»/добавлСния элСмСнта Π² Β«Π‘Ρ‚Π΅ΠΊΒ»

ΠŸΡ€ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ элСмСнта Ρƒ нас Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ Π΄Π²Π΅ ситуации:

Π Π°Π·Π±Π΅Ρ€Π΅ΠΌ Ρ‡ΡƒΡ‚ΡŒ Ρ‡ΡƒΡ‚ΡŒ ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅.
Π’ΠΎ-ΠΏΠ΅Ρ€Π²Ρ‹Ρ…, ΠΏΠΎΡ‡Π΅ΠΌΡƒ функция ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Π΅Ρ‚ **top, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Π°ΠΌ Π±Ρ‹Π»ΠΎ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ понятно, я ΠΎΡΡ‚Π°Π²Π»ΡŽ рассмотрСниС этого вопроса Π½Π° ΠΏΠΎΡ‚ΠΎΠΌ. Π’ΠΎ-Π²Ρ‚ΠΎΡ€Ρ‹Ρ…, ΠΏΠΎ-ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ ΠΏΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΎ q->next = *top ΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ ->.

-> ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π³Ρ€ΡƒΠ±ΠΎ говоря, ΠΌΡ‹ Π·Π°Ρ…ΠΎΠ΄ΠΈΠΌ Π² Π½Π°ΡˆΡƒ структуру ΠΈ достаСм ΠΎΡ‚Ρ‚ΡƒΠ΄Π° элСмСнт этой структуры. Π’ строчкС q->next = *top ΠΌΡ‹ ΠΈΠ· нашСй ячСйки достаСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт *next ΠΈ замСняСм Π΅Π³ΠΎ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка *top. Π”Ρ€ΡƒΠ³ΠΈΠΌΠΈ словами ΠΌΡ‹ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ связь, ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠ³ΠΎ элСмСнта ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка. Π’ΡƒΡ‚ Π½ΠΈΡ‡Π΅Π³ΠΎ слоТного, всС ΠΊΠ°ΠΊ с ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ. ΠΠΎΠ²ΡƒΡŽ ΠΊΠ½ΠΈΠ³Ρƒ ΠΌΡ‹ ΠΊΠ»Π°Π΄Π΅ΠΌ Ρ€ΠΎΠ²Π½ΠΎ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стопки, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌ связь ΠΎΡ‚ Π½ΠΎΠ²ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стопки ΠΊΠ½ΠΈΠ³. ПослС этого новая ΠΊΠ½ΠΈΠ³Π° автоматичСски становится Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ стСк Π½Π΅ стопка ΠΊΠ½ΠΈΠ³, Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт β€” Π²Π΅Ρ€ΡˆΠΈΠ½Π°, для этого ΠΏΠΈΡˆΠ΅Ρ‚ΡΡ: *top = q;.

Ѐункция удалСния элСмСнта ΠΈΠ· Β«Π‘Ρ‚Π΅ΠΊΠ°Β» ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ

Данная функция Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнт ΠΈΠ· стСка, Ссли число Data ячСйки(q->Data) Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°Π²Π½Π° числу, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΡ‹ сами ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ.

Π—Π΄Π΅ΡΡŒ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠ΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹:

Для Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ понимания удалСния элСмСнта ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΡƒΠΆΠ΅ ΠΏΡ€ΠΈΠ²Ρ‹Ρ‡Π½ΠΎΠΉ стопкой ΠΊΠ½ΠΈΠ³. Если Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³Ρƒ свСрху, ΠΌΡ‹ Π΅Ρ‘ ΡƒΠ±ΠΈΡ€Π°Π΅ΠΌ, Π° ΠΊΠ½ΠΈΠ³Π° ΠΏΠΎΠ΄ Π½Π΅ΠΉ становится Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ. Π’ΡƒΡ‚ Ρ‚ΠΎ ΠΆΠ΅ самоС, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π°Ρ‡Π°Π»Π΅ ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ элСмСнт станСт Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ *top = q->next; ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΡ‚ΠΎΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ элСмСнт free(q);

Если ΠΊΠ½ΠΈΠ³Π°, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ Π½ΡƒΠΆΠ½ΠΎ ΡƒΠ±Ρ€Π°Ρ‚ΡŒ находится ΠΌΠ΅ΠΆΠ΄Ρƒ двумя ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ ΠΈΠ»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠ½ΠΈΠ³ΠΎΠΉ ΠΈ столом, прСдыдущая ΠΊΠ½ΠΈΠ³Π° ляТСт Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΈΠ»ΠΈ Π½Π° стол. Как ΠΌΡ‹ ΡƒΠΆΠ΅ поняли, ΠΊΠ½ΠΈΠ³Π° Ρƒ нас-это ячСйка, Π° стол получаСтся это NULL, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта Π½Π΅Ρ‚. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΊΠ°ΠΊ с ΠΊΠ½ΠΈΠ³Π°ΠΌΠΈ, ΠΌΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ прСдыдущая ячСйка Π±ΡƒΠ΄Π΅Ρ‚ связана с ΠΏΠΎΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ prev->next = q->next;, стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ Ρ‡Ρ‚ΠΎ prev->next ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π²Π½ΡΡ‚ΡŒΡΡ ΠΊΠ°ΠΊ ячСйкС, Ρ‚Π°ΠΊ ΠΈ Π½ΡƒΠ»ΡŽ, Π² случаС Ссли q->next = NULL, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ячСйки Π½Π΅Ρ‚(ΠΊΠ½ΠΈΠ³Π° ляТСт Π½Π° стол), послС этого ΠΌΡ‹ ΠΎΡ‡ΠΈΡ‰Π°Π΅ΠΌ ячСйку free(q).

Π’Π°ΠΊ ΠΆΠ΅ стоит ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ссли Π½Π΅ провСсти Π΄Π°Π½Π½ΡƒΡŽ связь, участок ячССк, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π»Π΅ΠΆΠΈΡ‚ послС ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ ячСйки станСт нСдоступным, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ потСряСтся Ρ‚Π° самая связь, которая соСдиняСт ΠΎΠ΄Π½Ρƒ ячСйку с Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈ Π΄Π°Π½Π½Ρ‹ΠΉ участок просто затСряСтся Π² памяти

Ѐункция Π²Ρ‹Π²ΠΎΠ΄Π° Π΄Π°Π½Π½Ρ‹Ρ… стСка Π½Π° экран

Бамая простая функция:

Π—Π΄Π΅ΡΡŒ я Π΄ΡƒΠΌΠ°ΡŽ всС понятно, Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ лишь Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ q Π½ΡƒΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΠΊΠ°ΠΊ Π±Π΅Π³ΡƒΠ½ΠΎΠΊ, ΠΎΠ½ Π±Π΅Π³Π°Π΅Ρ‚ ΠΏΠΎ всСм ячСйкам ΠΎΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, ΠΊΡƒΠ΄Π° ΠΌΡ‹ Π΅Π³ΠΎ установили Π²Π½Π°Ρ‡Π°Π»Π΅: *q = top;, Π΄ΠΎ послСднСго элСмСнта.

Главная функция

Π₯ΠΎΡ€ΠΎΡˆΠΎ, основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ со стСком ΠΌΡ‹ записали, Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌ.
ΠŸΠΎΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΊΠΎΠ΄:

ВСрнСмся ΠΊ Ρ‚ΠΎΠΌΡƒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΆΠ΅ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ссли Π±Ρ‹ ΠΌΡ‹ Π²Π²Π΅Π»ΠΈ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, Ρ‚ΠΎ Β«Π‘Ρ‚Π΅ΠΊΒ» создавался ΠΈ измСнялся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π½ΡƒΡ‚Ρ€ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π² Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Π΅Ρ€ΡˆΠΈΠ½Π° Π±Ρ‹ ΠΊΠ°ΠΊ Π±Ρ‹Π»Π°, Ρ‚Π°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π²Π°Π»Π°ΡΡŒ NULL. ΠŸΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΌΡ‹ измСняСм Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ *top Π² Π³Π»Π°Π²Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ΡΡ Ссли функция измСняСт стСк, Π½ΡƒΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Ρ‚ΡŒ Π² Π½Π΅Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ Π½Π° ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚Π°ΠΊ Ρƒ нас Π±Ρ‹Π»ΠΎ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ s_push,s_delete_key. Π’ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ s_print Β«Π‘Ρ‚Π΅ΠΊΒ» Π½Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, поэтому ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅ΠΌ просто ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ.
ВмСсто Ρ†ΠΈΡ„Ρ€ 1,2,3,4,5 ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ-ΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Ρ‚ΠΈΠΏΠ° int.

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

ΠŸΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² стСк элСмСнты постоянно Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ, Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒΡΡ элСмСнты Π±ΡƒΠ΄ΡƒΡ‚ Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ порядкС

Π’ Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ…ΠΎΡ‚Π΅Π»ΠΎΡΡŒ Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π·Π° ΡƒΠ΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ ΠΌΠΎΠ΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅ врСмя, я ΠΎΡ‡Π΅Π½ΡŒ надСюсь Ρ‡Ρ‚ΠΎ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π» ΠΏΠΎΠΌΠΎΠ³ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΌ программистам ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Β«Π‘Ρ‚Π΅ΠΊΒ», ΠΊΠ°ΠΊ ΠΈΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π² дальнСйшСм Ρƒ Π½ΠΈΡ… большС Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ½Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. ΠŸΠΈΡˆΠΈΡ‚Π΅ Π² коммСнтариях своС ΠΌΠ½Π΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΌΠ½Π΅ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои ΡΡ‚Π°Ρ‚ΡŒΠΈ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ. Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅.

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

Для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Ρ‹ стСки?

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Jul 3, 2019 Β· 4 min read

Когда я ΡƒΠ·Π½Π°Π», Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ стСк, ΠΌΠ½Π΅ стало интСрСсно Π΅Π³ΠΎ практичСскоС ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅. Оказалось, Ρ‡Ρ‚ΠΎ Ρ‡Π°Ρ‰Π΅ всСго эта структура ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ β€œΠžΡ‚ΠΌΠ΅Π½Π°β€ ( Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, ⌘+ Z ΠΈΠ»ΠΈ Ctrl+ Z).

Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ это Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, разбСрСмся с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ стСка.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ стСк?

Π‘Ρ‚Π΅ΠΊ β€” список элСмСнтов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΈΠ·ΠΌΠ΅Π½Ρ‘Π½ лишь с ΠΎΠ΄Π½ΠΎΠΉ стороны, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‰Π΅ΠΉΡΡ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ стСка.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ приспособлСниС для Ρ€Π°Π·Π΄Π°Ρ‡ΠΈ Ρ‚Π°Ρ€Π΅Π»ΠΎΠΊ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ стоят Π² стопкС. НовыС Ρ‚Π°Ρ€Π΅Π»ΠΊΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ²Π΅Ρ€Ρ… ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ, Π° Π±Ρ€Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ лишь свСрху. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Π΅ΠΌ ΠΏΠΎΠ·ΠΆΠ΅ Ρ‚Π°Ρ€Π΅Π»ΠΊΡƒ ΠΏΠΎΠ»ΠΎΠΆΠ°Ρ‚ Π² стопку, Ρ‚Π΅ΠΌ Ρ€Π°Π½ΡŒΡˆΠ΅ Π΅Ρ‘ ΠΎΡ‚Ρ‚ΡƒΠ΄Π° Π²ΠΎΠ·ΡŒΠΌΡƒΡ‚. Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… структур Π΄Π°Π½Π½Ρ‹Ρ… это называСтся LIFO-ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠΌ (послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΡ‘Π»).

Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ, Ρ‚ΠΎ стСк ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ добавлСния ( push) ΠΈ удалСния ( pop) элСмСнтов Π½Π° Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Π—Π°Ρ‡Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ стСк для ΠΎΡ‚ΠΌΠ΅Π½Ρ‹?

ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ ΠΎΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ послСднСС дСйствиС.

Π‘Ρ‚Π΅ΠΊ позволяСт Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ элСмСнты ΠΊ Π΅Π³ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Ρ‚ΠΎΡ‚ элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» послСдним.

Π§Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΠ΄Ρ‘Ρ‚, Ссли Π½ΠΈ ΠΎΠ΄Π½ΠΎ дСйствиС Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ? Π‘Ρ‚Π΅ΠΊ вСдь станСт ΠΎΠ³Ρ€ΠΎΠΌΠ½Ρ‹ΠΌ!

Π’Π΅Ρ€Π½ΠΎ. Если Π½Π΅ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ элСмСнты ΠΈΠ· стСка ΠΎΡ‚ΠΌΠ΅Π½Ρ‹, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹, Ρ‚ΠΎ ΠΎΠ½ станСт ΠΎΡ‡Π΅Π½ΡŒ большим. ИмСнно поэтому Ρ‚Π°ΠΊΠΈΠ΅ прилоТСния, ΠΊΠ°ΠΊ Adobe Photoshop, с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Ρ„Π°ΠΉΠ»ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ всё большС ΠΈ большС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти. Π‘Ρ‚Π΅ΠΊ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ Ρ…Ρ€Π°Π½ΠΈΡ‚ всС дСйствия, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Ρ‘Π½Π½Ρ‹Π΅ Π½Π°Π΄ Ρ„Π°ΠΉΠ»ΠΎΠΌ, Π² памяти Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° Π²Ρ‹ Π½Π΅ сохранитС ΠΈ Π½Π΅ Π·Π°ΠΊΡ€ΠΎΠ΅Ρ‚Π΅ Ρ„Π°ΠΉΠ».

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ стСка

Π‘Ρ‚Π΅ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π»ΠΈΠ±ΠΎ связныС списки, Π»ΠΈΠ±ΠΎ массивы. Π― ΠΏΡ€ΠΈΠ²Π΅Π΄Ρƒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка Π½Π° ΠΎΠ±Π΅ΠΈΡ… структурах Π½Π° Python ΠΈ расскаТу ΠΎ ΠΏΠ»ΡŽΡΠ°Ρ… ΠΈ минусах ΠΊΠ°ΠΆΠ΄ΠΎΠΉ.

Π‘Ρ‚Π΅ΠΊ Π½Π° связном спискС:

Π‘Ρ‚Π΅ΠΊ Π½Π° массивС:

Π§Ρ‚ΠΎ Π»ΡƒΡ‡ΡˆΠ΅?

Π’ ΠΊΠΎΠ΄Π΅ я ΡƒΠΊΠ°Π·Π°Π» ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ β€œΠžβ€ большоС. Как Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠ°Π»ΠΎ Ρ‡Π΅ΠΌ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ.

Однако Π΅ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½ΡŽΠ°Π½ΡΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ стоит ΡƒΡ‡Π΅ΡΡ‚ΡŒ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

Массив

Π­Ρ‚ΠΎ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½Ρ‹ΠΉ Π±Π»ΠΎΠΊ памяти. Из-Π·Π° этого ΠΏΡ€ΠΈ малСньком Ρ€Π°Π·ΠΌΠ΅Ρ€Π΅ стСка массив Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ лишнСС мСсто. Π•Ρ‰Ρ‘ ΠΎΠ΄ΠΈΠ½ нСдостаток Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ Ρ€Π°Π· ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° массива придётся ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² Π½ΠΎΠ²ΡƒΡŽ ячСйку памяти.

Бвязный список

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

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

Π’Π°ΠΊ ΠΊΠ°ΠΊ динамичСский массив увСличиваСтся Π² Π΄Π²Π° Ρ€Π°Π·Π° ΠΏΡ€ΠΈ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅Ρ‚ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Ρ‚ΡŒ всё Ρ€Π΅ΠΆΠ΅ ΠΈ Ρ€Π΅ΠΆΠ΅. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π΅ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ ΠΌΠ½ΠΎΠ³ΠΎ мСста, Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅ Π² связных списках Π½Π΅ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Ρ‹.

Как Π²ΠΈΠ΄ΠΈΠΌ, ΠΌΠ΅ΠΆΠ΄Ρƒ этими двумя рСализациями стСка практичСски Π½Π΅Ρ‚ Ρ€Π°Π·Π»ΠΈΡ‡ΠΈΠΉ β€” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ Ρ‚Ρƒ, Ρ‡Ρ‚ΠΎ нравится Π²Π°ΠΌ.

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ стСк, Π²Π²Π΅Π΄Π΅ΠΌ нСсколько Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΡ добавлСния элСмСнта Π½Π° стСк называСтся Β«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 соотвСтствСнно.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π‘ΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΡƒ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. ΠšΠ°Ρ€Ρ‚ΠΈΠ½ΠΊΠ° ΠΏΡ€ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ. Π€ΠΎΡ‚ΠΎ Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ stack Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ

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

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

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

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

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

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

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

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

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ EnqueueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ DequeueLast

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekFirst

ΠœΠ΅Ρ‚ΠΎΠ΄ PeekLast

ΠœΠ΅Ρ‚ΠΎΠ΄ Count

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

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

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

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

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