Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠžΡΠ½ΠΎΠ²Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 41

Автор Π‘Π΅Ρ€Ρ‚Ρ€Π°Π½ ΠœΠ΅ΠΉΠ΅Ρ€

[x]. Ѐункция new создаСт пустой стСк.

Π’ Ρ€Π°Π·Π΄Π΅Π»Π΅ ЀУНКЦИИ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ Π½Π΅ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ, вводятся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΡ… сигнатуры - списки Ρ‚ΠΈΠΏΠΎΠ² ΠΈΡ… Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ² ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°. Π‘ΠΈΠ³Π½Π°Ρ‚ΡƒΡ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put


STACK [G] Γ— G STACK [G]


ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ put Π±Π΅Ρ€Π΅Ρ‚ Π² качСствС Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Π° ΠΏΠ°Ρ€Ρƒ Π²ΠΈΠ΄Π° <s,x>, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ s - экзСмпляр Ρ‚ΠΈΠΏΠ° STACK [G], Π° x - экзСмпляр Ρ‚ΠΈΠΏΠ° G, ΠΈ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² качСствС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° экзСмпляр Ρ‚ΠΈΠΏΠ° STACK [G]. Π’ΠΎΠΎΠ±Ρ‰Π΅ говоря, мноТСство Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Π΅Π³ΠΎ Ρ‚ΠΈΠΏ указываСтся Π² сигнатурС ΠΏΡ€Π°Π²Π΅Π΅ стрСлки, здСсь это STACK [G]) ΠΌΠΎΠΆΠ΅Ρ‚ само Π±Ρ‹Ρ‚ΡŒ Π΄Π΅ΠΊΠ°Ρ€Ρ‚ΠΎΠ²Ρ‹ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ описании ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ, Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ… Π΄Π²Π° ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ².

Π’ сигнатурС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ remove ΠΈ item вмСсто ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΉ стрСлки ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ пСрСчСркнутая стрСлка . Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ эти Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ Π½Π΅ ΠΊΠΎ всСм элСмСнтам мноТСства Π²Ρ…ΠΎΠ΄ΠΎΠ². ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ new выглядит просто ΠΊΠ°ΠΊ


new: STACK


Π±Π΅Π· всякой стрСлки Π² сигнатурС. ЀактичСски, это сокращСниС для записи


new: STACK,


ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π±Π΅Π· Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ². Π—Π΄Π΅ΡΡŒ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ new Π΄ΠΎΠ»ΠΆΠ½Π° всСгда Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ - пустой стСк. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для простоты ΠΌΡ‹ ΡƒΠ±Ρ€Π°Π»ΠΈ здСсь стрСлку. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ примСнСния этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ‚. Π΅. пустой стСк) Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒΡΡ new, ΠΊΠ°ΠΊ сокращСниС для new(), ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ примСнСния new ΠΊ пустому списку Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ².

ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ

Π’ Π½Π°Ρ‡Π°Π»Π΅ этой Π»Π΅ΠΊΡ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° конструкторы, запросы ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹. Π’ спСцификации АВД для Π½ΠΎΠ²ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° T, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ для STACK [G] Π² нашСм ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ эту ΠΊΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Π±ΠΎΠ»Π΅Π΅ строго. Π­Ρ‚Π° классификация просто провСряСт, Π³Π΄Π΅ ΠΏΠΎ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡŽ ΠΊ стрСлкС располоТСн Π² сигнатурС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΈΠΏ T:

Π’ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ эти Ρ‚Ρ€ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ "конструктор", "аксСссор" ΠΈ "ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€". Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ придСрТиваСмся Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ², Π±ΠΎΠ»Π΅Π΅ нСпосрСдствСнно связанных с ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ АВД ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

[x]. Ѐункция, Π² сигнатурС ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ T появляСтся лишь справа ΠΎΡ‚ стрСлки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ new, являСтся Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ-конструктором. Она ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, ΡΠΎΠ·Π΄Π°ΡŽΡ‰ΡƒΡŽ экзСмпляры T ΠΈΠ· экзСмпляров Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰ΡƒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΎΠ², Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠ°ΠΊ Π² случаС константного конструктора new.

[x]. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ item ΠΈ empty, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… T появляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ слСва ΠΎΡ‚ стрСлки, ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями-запросами. Они ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°ΡŽΡ‚ свойства T, Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½Π½Ρ‹Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… экзСмпляров Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² (Π² Π½Π°ΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… - это BOOLEAN ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ Ρ‚ΠΈΠΏΠ° G).

[x]. Π’Π°ΠΊΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΊΠ°ΠΊ put ΠΈ remove, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… T появляСтся с ΠΎΠ±Π΅ΠΈΡ… сторон стрСлки, ΡΠ²Π»ΡΡŽΡ‚ΡΡ функциями-ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ. Они ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΡŽΡ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ экзСмплярам T ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, экзСмплярам Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ² Π²Ρ‹Π΄Π°ΡŽΡ‚ Π½ΠΎΠ²Ρ‹Π΅ экзСмпляры Ρ‚ΠΈΠΏΠ° T.

РаздСл АКБИОМЫ

ΠœΡ‹ ΡƒΠΆΠ΅ Π²ΠΈΠ΄Π΅Π»ΠΈ, ΠΊΠ°ΠΊ Ρ‚ΠΈΠΏΡ‹ Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, STACK) ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ посрСдством задания списка Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Ρ… ΠΊ ΠΈΡ… экзСмплярам. ВсС, Ρ‡Ρ‚ΠΎ извСстно ΠΎΠ± этих функциях, - это ΠΈΡ… сигнатуры.

Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π΅Ρ‡ΡŒ ΠΈΠ΄Π΅Ρ‚ ΠΎ стСкС, Π° Π½Π΅ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ структурС Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΠΌΠ΅ΡŽΡ‰Π΅ΠΉΡΡ ΠΏΠΎΠΊΠ° спСцификации АВД ΡΠΎΠ²Π΅Ρ€ΡˆΠ΅Π½Π½ΠΎ нСдостаточно. Всякий Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅Π»ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ: "ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ вошСл - ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»", Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚Π²ΠΎΡ€ΡΡ‚ΡŒ этой спСцификации.

Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡƒΠ΄ΠΈΠ²Π»ΡΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ЀУНКЦИИ сами Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ (Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΎΠ±ΡŠΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅), Π½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ. Π’ Ρ€Π°Π½Π΅Π΅ рассмотрСнном ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ матСматичСского опрСдСлСния:


square_plus_one: R R

square_plus_one (x)= x2 + 1 (для каТдого x из R)


пСрвая строка ΠΈΠ³Ρ€Π°Π΅Ρ‚ Ρ€ΠΎΠ»ΡŒ сигнатуры, Π½ΠΎ Π΅ΡΡ‚ΡŒ Π΅Ρ‰Π΅ ΠΈ вторая строка, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ опрСдСляСтся Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Как ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΡΡ‚ΠΈΡ‡ΡŒ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ АВД?

ΠœΡ‹ Π½Π΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ явныС опрСдСлСния Π² Π΄ΡƒΡ…Π΅ Π²Ρ‚ΠΎΡ€ΠΎΠΉ строки опрСдСлСния Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ square_plus_one, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ это заставило Π±Ρ‹ нас Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ†ΠΈΡŽ, Π° всС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π΅ обсуТдСниС ΠΏΠΎΠΊΠ°Π·Π°Π»ΠΎ Π½Π°ΠΌ ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ Ρ€Π°Π½Π½Π΅Π³ΠΎ Π²Ρ‹Π±ΠΎΡ€Π° прСдставлСния.

Волько Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΡ‹ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π³Π»ΡΠ΄Π΅Ρ‚ΡŒ явноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Π΄Π°Π²Π°ΠΉΡ‚Π΅ напишСм ΠΎΠ΄Π½ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ для ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ³ΠΎ Ρ€Π°Π½Π΅Π΅ прСдставлСния стСка ΠœΠΠ‘Π‘Π˜Π’_Π’Π’Π•Π Π₯. Π‘ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ Π²Ρ‹Π±ΠΎΡ€ этого прСдставлСния ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ экзСмпляр Ρ‚ΠΈΠΏΠ° STACK - это ΠΏΠ°Ρ€Π° <count, representation> , Π³Π΄Π΅ representation - это массив, Π° count - это число ΠΏΠΎΠΌΠ΅Ρ‰Π΅Π½Π½Ρ‹Ρ… Π² стСк элСмСнтов. Π’ΠΎΠ³Π΄Π° явноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put (для любого экзСмпляра x Ρ‚ΠΈΠΏΠ° G) выглядит Ρ‚Π°ΠΊ:


put (<count, representation>, x)= <count + 1, representation [count+1: x]>


Π³Π΄Π΅ a [n: v] ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ массив, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ ΠΈΠ· a ΠΏΡƒΡ‚Π΅ΠΌ измСнСния значСния элСмСнта с индСксом n Π½Π° v (всС ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ).

Π­Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put являСтся просто матСматичСской вСрсиСй Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ put, набросок ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² стилС Паскаля ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ вслСд Π·Π° прСдставлСниСм ΠœΠΠ‘Π‘Π˜Π’_Π’Π’Π•Π Π₯ Π½Π° рисункС с Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌΠΈ прСдставлСниями стСков Π² Π½Π°Ρ‡Π°Π»Π΅ этой Π»Π΅ΠΊΡ†ΠΈΠΈ.

Но это Π½Π΅ Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π±Ρ‹ нас устроило. "ΠžΡΠ²ΠΎΠ±ΠΎΠ΄ΠΈΡ‚Π΅ нас ΠΎΡ‚ рабства прСдставлСний!" - этот Π»ΠΎΠ·ΡƒΠ½Π³ Π€Ρ€ΠΎΠ½Ρ‚Π° ОсвобоТдСния ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΅Π³ΠΎ Π²ΠΎΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΊΡ€Ρ‹Π»Π° (Π±Ρ€ΠΈΠ³Π°Π΄Ρ‹ АВД) являСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ нашим. (ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ политичСская Π²Π΅Ρ‚Π²ΡŒ спСциализируСтся Π½Π° тяТбах: класс - дСйствиС).

ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всякоС явноС ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ заставляСт Π²Ρ‹Π±ΠΈΡ€Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ прСдставлСниС, обратимся ΠΊ нСявным опрСдСлСниям. ΠŸΡ€ΠΈ этом воздСрТимся ΠΎΡ‚ опрСдСлСния Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² спСцификации АВД ΠΈ вмСсто этого опишСм свойства этих Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ - всС ΠΈΡ… сущСствСнныС свойства, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ эти свойства.

Они Ρ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ АКБИОМЫ (AXIOMS). Для Ρ‚ΠΈΠΏΠ° STACK ΠΎΠ½ выглядит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ.

Аксиомы

Для всСх x: G, s: STACK [G],

[x]. (A1) item (put (s, x)) = x

[x]. (A2) remove (put (s, x)) = s

[x]. (A3) empty (new)

[x]. (A4) not empty (put (s, x))

ΠŸΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π΅ аксиомы Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‚ основныС свойства стСков (послСдним ΠΏΡ€ΠΈΡˆΠ΅Π» - ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΠ΅Π») LIFO. Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΈΡ…, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρ‡Ρ‚ΠΎ Ρƒ нас Π΅ΡΡ‚ΡŒ стСк s ΠΈ экзСмпляр x, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΠΌ s' ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ put(s, x) , Ρ‚. Π΅. ΠΊΠ°ΠΊ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ вталкивания x Π² s. ΠŸΡ€ΠΈΡΠΏΠΎΡΠΎΠ±ΠΈΠΌ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… рисунков:

Рис. 6.4.  ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ put

Π—Π΄Π΅ΡΡŒ аксиома A1, Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ s' являСтся x - послСдний элСмСнт, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΡ‹ Π²Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈ, Π° аксиома A2 ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ элСмСнта s' ΠΌΡ‹ снова ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ Ρ‚ΠΎΡ‚ ΠΆΠ΅ стСк s, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±Ρ‹Π» Π΄ΠΎ вталкивания x. Π­Ρ‚ΠΈ Π΄Π²Π΅ аксиомы Π΄Π°ΡŽΡ‚ Π»Π°ΠΊΠΎΠ½ΠΈΡ‡Π½ΠΎΠ΅ описаниС Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ свойства стСков Π² чисто матСматичСских Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… Π±Π΅Π· всякой ΠΏΠΎΠΌΠΎΡ‰ΠΈ ΠΈΠΌΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… рассуТдСний ΠΈΠ»ΠΈ ссылок Π½Π° свойства прСдставлСний.

Аксиомы A3 ΠΈ A4 говорят ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠΎΠ³Π΄Π° стСк пуст, Π° ΠΊΠΎΠ³Π΄Π° - Π½Π΅Ρ‚: стСк, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ конструктора new пустой, Π° всякий стСк, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ послС вталкивания элСмСнта Π² ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ стСк (пустой ΠΈΠ»ΠΈ нСпустой) Π½Π΅ являСтся пустым.

Π­Ρ‚ΠΈ аксиомы, ΠΊΠ°ΠΊ ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅, ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΡ€Π΅Π΄ΠΈΠΊΠ°Ρ‚Π°ΠΌΠΈ (Π² смыслС Π»ΠΎΠ³ΠΈΠΊΠΈ), Π²Ρ‹Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΠΌΠΈ ΠΈΡΡ‚ΠΈΠ½Π½ΠΎΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… свойств для всСх Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ s ΠΈ x. НСкоторыС ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°ΡŽΡ‚ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ A3 ΠΈ A4 Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ эквивалСнтной Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠ°ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ empty ΠΈΠ½Π΄ΡƒΠΊΡ†ΠΈΠ΅ΠΉ ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ стСков:


Для всСх x: G, s: STACK [G]

A3' Β· empty (new) = true

A4' Β· empty (put (s, x)) = false


Π”Π²Π΅ ΠΈΠ»ΠΈ Ρ‚Ρ€ΠΈ Π²Π΅Ρ‰ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ Π·Π½Π°Π΅ΠΌ ΠΎ стСках

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ АВД ΡΠ²Π»ΡΡŽΡ‚ΡΡ нСявными. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ Π΄Π²Π° Π²ΠΈΠ΄Π° "нСявности":

[x]. ΠœΠ΅Ρ‚ΠΎΠ΄ АВД опрСдСляСт нСявно Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ мноТСство ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², задавая ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹Π΅ ΠΊ Π½ΠΈΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Из этого опрСдСлСния Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ слСдуСт, Ρ‡Ρ‚ΠΎ Π² Π½Π΅ΠΌ пСрСчислСны всС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ; часто, Π½Π° ΠΏΡƒΡ‚ΠΈ ΠΊ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΡŽ, Π±ΡƒΠ΄ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

[x]. Π‘Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ΡΡ нСявно. ВмСсто явных ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ аксиомы, Π·Π°Π΄Π°ΡŽΡ‰ΠΈΠ΅ свойства этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ. Π—Π΄Π΅ΡΡŒ Ρ‚ΠΎΠΆΠ΅ Π½ΠΈΡ‡Π΅Π³ΠΎ Π½Π΅ утвСрТдаСтся ΠΎ ΠΏΠΎΠ»Π½ΠΎΡ‚Π΅: ΠΊΠΎΠ³Π΄Π° Π²Ρ‹, Π² ΠΊΠΎΠ½Ρ†Π΅ ΠΊΠΎΠ½Ρ†ΠΎΠ², Π΄ΠΎΠΉΠ΄Π΅Ρ‚Π΅ Π΄ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ этих Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΠ½ΠΈ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚ΡƒΡ‚ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства.