Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΈΠΏΠΎΠ² ΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ΠΌ Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΡΠΎ ΠΈ Π΅ΡΡΡ ΠΏΠ°ΡΠ°Π΄ΠΎΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ: ΡΠ΅ΠΌ Π±ΠΎΠ»ΡΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², ΡΠ΅ΠΌ ΠΌΠ΅Π½ΡΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ², ΠΊ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ½ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ.
ΠΠ°ΡΠ°Π΄ΠΎΠΊΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ-ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ - ΡΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΠΏΡΠΈΡΠΈΠ½ Π΄Π»Ρ ΡΡΡΡΠ°Π½Π΅Π½ΠΈΡ ΡΠ΅ΡΠΌΠΈΠ½Π° "ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ", ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡΡΠ΅Π³ΠΎ ΠΏΠΎΠ½ΡΡΠΈΠ΅ "ΠΏΠΎΠ΄ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ". ΠΡΡΠ³ΠΎΠΉ, ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠΉ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π²ΡΡΡΠ΅ΡΠ°ΡΡΠ΅Π΅ΡΡ Π² Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ ΡΠ±ΠΈΠ²Π°ΡΡΠ΅Π΅ Ρ ΡΠΎΠ»ΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ΅ΡΠΌΠΈΠ½Π° "ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡ" Π΄Π»Ρ ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΊΠ°ΠΊ ΠΏΡΡΠΌΠΎΠ³ΠΎ, ΡΠ°ΠΊ ΠΈ Π½Π΅ΠΏΡΡΠΌΠΎΠ³ΠΎ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ. ΠΡΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ²: Π½Π°ΡΠ»Π΅Π΄Π½ΠΈΠΊ, ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΠΎΡΠΎΠΌΠΎΠΊ ΠΈ Π΄Π²ΠΎΠΉΡΡΠ²Π΅Π½Π½ΡΡ ΠΊ Π½ΠΈΠΌ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ²: ΡΠΎΠ΄ΠΈΡΠ΅Π»Ρ, ΠΏΡΠ΅Π΄ΠΎΠΊ ΠΈ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΡΠΉ ΠΏΡΠ΅Π΄ΠΎΠΊ.
Π ΠΎΠ»Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΊΠ»Π°ΡΡΠΎΠ²
ΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ²Π»ΡΡΡΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π²Π°ΠΆΠ½Π΅ΠΉΡΠΈΡ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΎΠ², ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π½ΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π½Π°ΡΠ°Π»Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΏΡΠΎΠ±Π»Π΅ΠΌ ΠΊΠΎΠ½ΡΡΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ.
ΠΠ°Π·Π°Π΄ ΠΊ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΡΠΈΠΏΠ°ΠΌ Π΄Π°Π½Π½ΡΡ
ΠΠ°ΡΡΡΠ΅Π½Π½ΡΠ΅ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΡΠΌΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ Ρ ΠΎΡΠΎΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡ Π΄Π»Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΠ’Π. ΠΡΠ΅ΠΊΡΠ°ΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ - ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ Π΄Π»Ρ ΡΡΠ΅ΠΊΠΎΠ². ΠΡ ΡΠΆΠ΅ ΠΎΠΏΠΈΡΡΠ²Π°Π»ΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ put, ΡΠ΅ΠΉΡΠ°Ρ ΠΏΡΠΈΠ²Π΅Π΄Π΅ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ»Π½ΠΎΠ³ΠΎ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°.
indexing
description:
"Π‘ΡΠ΅ΠΊΠΈ (ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ Ρ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½ΠΎΠΉ Last-in, First-Out), %
%Π½Π΅ Π·Π°Π²ΠΈΡΡΡΠΈΠ΅ ΠΎΡ Π²ΡΠ±ΠΎΡΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ"
deferred class
STACK [G]
feature -- ΠΠΎΡΡΡΠΏ
count: INTEGER is
-- Π§ΠΈΡΠ»ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ².
deferred
end
item: G is
-- ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
require
not_empty: not empty
deferred
end
feature - ΠΡΡΠ΅Ρ ΠΎ ΡΡΠ°ΡΡΡΠ΅
empty: BOOLEAN is
-- Π‘ΡΠ΅ΠΊ ΠΏΡΡΡΠΎΠΉ?
do
Result := (count = 0)
end
full: BOOLEAN is
-- Π‘ΡΠ΅ΠΊ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½?
deferred
end
feature - ΠΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ°
put (x: G) is
-- ΠΡΠΎΠ»ΠΊΠ½ΡΡΡ x Π½Π° Π²Π΅ΡΡΠΈΠ½Ρ.
require
not full
deferred
ensure
not_empty: not empty
pushed_is_top: item = x
one_more: count = old count + 1
end
remove is
-- ΠΡΡΠΎΠ»ΠΊΠ½ΡΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ.
require
not empty
deferred
ensure
not_full: not full
one_less: count = old count - 1
end
change_top (x: T) is
-- ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ Π²Π΅ΡΡ Π½ΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ Π½Π° x
require
not_empty: not empty
do
remove; put (x)
ensure
not_empty: not empty
new_top: item = x
same_number_of_items: count = old count
end
wipe_out is
-- Π£Π΄Π°Π»ΠΈΡΡ Π²ΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ.
deferred
ensure
no_more_elements: empty
end
invariant
non_negative_count: count >= 0
empty_count: empty = (count = 0)
end
ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅: Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° change_top ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ remove ΠΈ put. (Π’Π°ΠΊΠ°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΉ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄Π»Ρ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅ ΡΠ°ΠΌΠΎΠΉ Π»ΡΡΡΠ΅ΠΉ, Π½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΠΏΠΎΡΠΎΠΌΠΊΠΈ ΠΊΠ»Π°ΡΡΠ° STACK ΠΌΠΎΠ³ΡΡ Π΅Π΅ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ.)
ΠΡΠ»ΠΈ ΡΡΠ°Π²Π½ΠΈΡΡ ΠΊΠ»Π°ΡΡ STACK ΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠ΅ΠΉ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΠ’Π, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π² Π»Π΅ΠΊΡΠΈΠΈ 6, ΡΠΎ ΠΎΠ±Π½Π°ΡΡΠΆΠΈΡΡΡ ΡΠ΄ΠΈΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΡ ΠΎΠ΄ΡΡΠ²ΠΎ. ΠΠΎΠ΄ΡΠ΅ΡΠΊΠ½Π΅ΠΌ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠ½ΠΊΡΠΈΡΠΌΠΈ ΠΠ’Π ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΊΠ»Π°ΡΡΠ°, ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠ½ΠΊΡΠΎΠΌ PRECONDITIONS ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ»ΠΎΠ²ΠΈΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ. ΠΠΊΡΠΈΠΎΠΌΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΠΎΡΡΡΡΠ»ΠΎΠ²ΠΈΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ Π² ΠΈΠ½Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΠ°.
ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ change_top, count ΠΈ wipe_out Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ Π²ΠΊΠ»ΡΡΠ΅Π½Ρ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΠ’Π (ΡΠΌ. ΡΠΏΡΠ°ΠΆΠ½Π΅Π½ΠΈΠ΅ Π£6.8). ΠΡΡΡΡΡΡΠ²ΠΈΠ΅ ΡΠ²Π½ΠΎΠ³ΠΎ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ new ΠΈΠ· ΠΠ’Π ΡΠ°ΠΊΠΆΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² Π±ΡΠ΄ΡΡ Π·Π°Π½ΠΈΠΌΠ°ΡΡΡΡ ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΡ ΠΏΠΎΡΠΎΠΌΠΊΠ°Ρ ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°. ΠΡΡΠ°ΡΡΡΡ ΡΡΠΈ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΡ ΠΎΡΠ»ΠΈΡΠΈΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ ΠΈΠ· Π½ΠΈΡ - ΡΡΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ full, ΡΠ°ΡΡΡΠΈΡΠ°Π½Π½ΠΎΠΉ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΠΌ ΡΠΈΡΠ»ΠΎΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΡΡΠ΅ΠΊΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌΠΈ. ΠΡΠΎ ΡΠΈΠΏΠΈΡΠ½ΡΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠΎΠ΅ Π½Π΅ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, Π½ΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΡΠ΅ΠΌ. ΠΡΠΌΠ΅ΡΠΈΠΌ ΠΎΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎ ΡΡΠΎ ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΠ’Π ΠΈ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ ΡΡΡΡΠ°Π½ΠΈΡΡ, Π²ΠΊΠ»ΡΡΠΈΠ² Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΠ’Π ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΠΎΡ Π²Π°ΡΠ° ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π½ΡΡ ΡΡΠ΅ΠΊΠΎΠ². ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ½ΠΎΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΏΠΎΡΠ΅ΡΡΠ½Π°, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠΏΠΈΡΠΊΠΎΠ²) ΠΌΠΎΠ³ΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ full ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°ΠΌΠΈ, Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΠΈΠΌΠΈ Π»ΠΎΠΆΡ.
ΠΡΠΎΡΠΎΠ΅ ΠΎΡΠ»ΠΈΡΠΈΠ΅, ΠΎΡΠΌΠ΅ΡΠ΅Π½Π½ΠΎΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠΎ ΠΊΠΎΠ½ΡΡΠ°ΠΊΡΡ, ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΠ’Π ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°ΠΏΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠ²Π½Π° (ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½Π°), ΠΎΠ½Π° Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ Π±Π΅Π· ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ ΡΡΡΠ΅ΠΊΡΠΎΠ². Π ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ ΠΊΠ»Π°ΡΡ, Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π° Π΅Π³ΠΎ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΡΡΡ, ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠΌΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΠΌ (ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΌ), Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ put ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΊΠ°ΠΊ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ°, ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠ°Ρ ΡΡΠ΅ΠΊ, Π° Π½Π΅ ΠΊΠ°ΠΊ ΡΡΠ½ΠΊΡΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ Π±Π΅ΡΠ΅Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ° ΠΎΠ΄ΠΈΠ½ ΡΡΠ΅ΠΊ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄ΡΡΠ³ΠΎΠΉ.
ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΊΠ°ΠΊ ΡΠΎΠΆΠ΅ ΡΠΆΠ΅ ΠΎΡΠΌΠ΅ΡΠ°Π»ΠΎΡΡ, ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²ΡΡΠ°Π·ΠΈΡΠ΅Π»Π΅Π½ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π°ΠΊΡΠΈΠΎΠΌ ΠΠ’Π. ΠΠ· ΡΠ΅ΡΡΡΠ΅Ρ Π°ΠΊΡΠΈΠΎΠΌ ΡΡΠ΅ΠΊΠΎΠ²
ΠΠ»Ρ Π²ΡΠ΅Ρ x: G, s: STACK [G],
1
item (put (s, x)) = x
2
remove (put (s, x)) = s
3
empty (new)
4
not empty (put (s, x))
Π²ΡΠ΅, ΠΊΡΠΎΠΌΠ΅ (2), ΠΈΠΌΠ΅ΡΡ ΠΏΡΡΠΌΡΠ΅ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΡ ΡΡΠ΅Π΄ΠΈ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΉ. (ΠΡ ΠΏΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ (3) ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡΡ Ρ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ°Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ empty). ΠΡΠΈΡΠΈΠ½Ρ ΡΠ°ΠΊΠΈΡ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠΉ ΡΠΆΠ΅ Π±ΡΠ»ΠΈ ΠΎΠ±ΡΡΡΠ½Π΅Π½Ρ ΠΈ Π±ΡΠ»ΠΈ Π½Π°ΠΌΠ΅ΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΡΡΠΈ ΠΈΡ ΠΏΡΠ΅ΠΎΠ΄ΠΎΠ»Π΅Π½ΠΈΡ - ΡΠ·ΡΠΊΠΈ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ IFL.
ΠΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΊΠ°ΠΊ ΡΠ°ΡΡΠΈΡΠ½ΡΠ΅ ΠΈΠ½ΡΠ΅ΡΠΏΡΠ΅ΡΠ°ΡΠΈΠΈ: ΠΊΠ»Π°ΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ
ΠΠ΅ Π²ΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠ»Π°ΡΡΡ ΡΠ°ΠΊ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ ΠΠ’Π ΠΊΠ°ΠΊ STACK. Π ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΊΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ STACK, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ Π²ΡΠ΅ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Ρ, ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΊΠ»Π°ΡΡΠΎΠΌ, ΡΠ°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ FIXED_STACK, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΠΌ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΠ’Π, ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΌΠ΅ΡΡΠΎ Π΄Π»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΠ’Π Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΠΎΠΉ ΡΡΠ΅ΠΏΠ΅Π½ΡΡ Π·Π°Π²Π΅ΡΡΠ΅Π½Π½ΠΎΡΡΠΈ.
Π’ΠΈΠΏΠΈΡΠ½ΡΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠΎΠΌ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΈΠ΅ΡΠ°ΡΡ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ°Π±Π»ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π½Π°ΠΌ ΠΏΠΎΠ½ΡΡΡ ΡΠΎΠ»Ρ ΡΠ°ΡΡΠΈΡΠ½ΠΎΠΉ ΠΎΠ±ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΈ ΠΈΠ·ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ΅ΡΠ²ΠΎΠ½Π°ΡΠ°Π»ΡΠ½ΡΠΉ ΡΠΈΡΡΠ½ΠΎΠΊ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅ΠΉΡΠ°Ρ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠΎΠ²Π°ΡΡ Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ.
Π ΠΈΡ. 14.13. ΠΠ°ΡΠΈΠ°Π½ΡΡ ΠΏΠΎΠ½ΡΡΠΈΡ "ΡΠ°Π±Π»ΠΈΡΠ°"
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΎΠ±ΡΠΈΠΉ ΠΊΠ»Π°ΡΡ TABLE ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ Π½Π° ΡΡΠΎΠΌ ΡΡΠΎΠ²Π½Π΅ ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΎΠ±ΡΡΠ²ΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠ², Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠΈΡΡ Π½ΠΈΠΊΠ°ΠΊΠΎΠΉ ΡΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΉ ΠΈΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΡΠ΅Π΄ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΠΈΠΌΠ΅Π΅ΡΡΡ ΠΊΠ»Π°ΡΡ SEQUENTIAL_TABLE, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ°Π±Π»ΠΈΡΡ, Π² ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ Π²ΡΡΠ°Π²Π»ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ. ΠΡΠΈΠΌΠ΅ΡΠ°ΠΌΠΈ ΡΠ°ΠΊΠΈΡ ΡΠ°Π±Π»ΠΈΡ ΡΠ²Π»ΡΡΡΡΡ ΠΌΠ°ΡΡΠΈΠ²Ρ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΏΠΈΡΠΊΠΈ ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΈΠΌ ΠΊΠ»Π°ΡΡΡ Π² Π½ΠΈΠΆΠ½Π΅ΠΉ ΡΠ°ΡΡΠΈ ΡΠΈΡΡΠ½ΠΊΠ° ΡΠ²Π»ΡΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ.
ΠΡΠΎΠ±ΡΠΉ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ»Π°ΡΡΡ ΠΊΠ°ΠΊ SEQUENTIAL_TABLE. ΠΡΠΎΡ ΠΊΠ»Π°ΡΡ Π²ΡΠ΅ Π΅ΡΠ΅ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΉ, Π½ΠΎ Π΅Π³ΠΎ ΡΡΠ°ΡΡΡ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΠΈΠ½Π΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌ ΡΡΠ°ΡΡΡΠΎΠΌ ΠΊΠ°ΠΊ Ρ ΠΊΠ»Π°ΡΡΠ° TABLE ΠΈ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΊΠ°ΠΊ Ρ ARRAY_TABLE. Π£ Π½Π΅Π³ΠΎ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ, ΡΡΠΎΠ±Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡΡ ΡΠ΅Π±Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ², Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² Π½Π΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΠΎΠΈΡΠΊ:
has (x: G): BOOLEAN is
-- x ΠΈΠΌΠ΅Π΅ΡΡΡ Π² ΡΠ°Π±Π»ΠΈΡΠ΅?
do
from start until after or else equal (item, x) loop
forth
end
Result := not after
end
ΠΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Π°, Ρ ΠΎΡΡ Π΅Π΅ Π°Π»Π³ΠΎΡΠΈΡΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ. ΠΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΡ start (ΠΏΠΎΠΌΠ΅ΡΡΠΈΡΡ ΠΊΡΡΡΠΎΡ Π² ΠΏΠ΅ΡΠ²ΡΡ ΠΏΠΎΠ·ΠΈΡΠΈΡ), forth (ΡΠ΄Π²ΠΈΠ½ΡΡΡ ΠΊΡΡΡΠΎΡ Π½Π° ΠΎΠ΄Π½Ρ ΠΏΠΎΠ·ΠΈΡΠΈΡ), item (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ° Π² ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΊΡΡΡΠΎΡΠ°), after (Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡ Π»ΠΈ ΠΊΡΡΡΠΎΡ Π·Π° ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ?) ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠ»ΠΎΠΆΠ΅Π½Π½ΡΠΌΠΈ Π² ΠΊΠ»Π°ΡΡΠ΅ SEQUENTIAL_TABLE ΠΈ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΡΡ Π½Π° ΡΠΈΡΡΠ½ΠΊΠ΅ ΠΏΠΎΡΠΎΠΌΠΊΠΎΠ² ΡΡΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ° ΠΎΠ½ΠΈ ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΡΡ ΠΏΠΎ-ΡΠ°Π·Π½ΠΎΠΌΡ.
ΠΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π±ΡΠ»ΠΈ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½Ρ ΠΏΡΠΈ ΠΎΠ±ΡΡΠΆΠ΄Π΅Π½ΠΈΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ ΠΊΠ»Π°ΡΡ ARRAY_TABLE ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΠΊΡΡΡΠΎΡ ΡΠΈΡΠ»ΠΎΠΌ i, ΡΠ°ΠΊ ΡΡΠΎ ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° start ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ i := 1, Π° item ΠΊΠ°ΠΊ t @ i ΠΈ Ρ.Π΄.