ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…: списки

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

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

ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…: списки (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…: списки

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’ ΡΠ·Ρ‹ΠΊΠ°Ρ… программирования (Pascal, C, Π΄Ρ€.) сущСствуСт ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ способ выдСлСния памяти ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ называСтся динамичСским. Π’ ΡΡ‚ΠΎΠΌ случаС ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ отводится Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’Π°ΠΊΠΈΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ динамичСскими. Π Π°Π·Π΄Π΅Π» ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΈΠ²Π½ΠΎΠΉ памяти, распрСдСляСмый статичСски, называСтся статичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ; динамичСски распрСдСляСмый Ρ€Π°Π·Π΄Π΅Π» памяти называСтся динамичСской ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (динамичСски распрСдСляСмой ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ).

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

Π Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°ΠΌΠΈ связана с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° Π΄Π°Π½Π½Ρ‹Ρ… — ссылочного Ρ‚ΠΈΠΏΠ°. Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ ссылочный Ρ‚ΠΈΠΏ, Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ указатСлями.

Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ содСрТит адрСс поля Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ памяти, хранящСго Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°. Π‘Π°ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ располагаСтся Π² ΡΡ‚атичСской памяти.

АдрСс Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ — это Π½ΠΎΠΌΠ΅Ρ€ ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ Π±Π°ΠΉΡ‚Π° поля памяти, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ располагаСтся Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°. Π Π°Π·ΠΌΠ΅Ρ€ поля ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ опрСдСляСтся Ρ‚ΠΈΠΏΠΎΠΌ.

Π”Π°Π»Π΅Π΅ Π±ΡƒΠ΄Π΅ΠΌ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΎΠ±ΡΡƒΠΆΠ΄Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΈ Π΄Π΅ΠΉΡΡ‚вия с Π½ΠΈΠΌΠΈ Π² ΡΠ·Ρ‹ΠΊΠ΅ Pascal, ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Pascal ΠΈ C.

Π’Π΅Π»ΠΈΡ‡ΠΈΠ½Π° ссылочного Ρ‚ΠΈΠΏΠ° (ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ) описываСтся Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ описания ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Var: ^;

Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ описания ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ:

Type Mas1 = Array[1.100] Of Integer;

Var P1: ^Integer;

P2: ^String;

Pm: ^Mas1;

Π—Π΄Π΅ΡΡŒ P1 — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ Ρ†Π΅Π»ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°; P2 — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ строкового Ρ‚ΠΈΠΏΠ°; Pm — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉ массив, Ρ‚ΠΈΠΏ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Π·Π°Π΄Π°Π½ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Type.

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

Каким ΠΆΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ происходит Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ? ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ, выдСляСтся Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния стандартной ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ NEW. Π€ΠΎΡ€ΠΌΠ°Ρ‚ обращСния ΠΊ ΡΡ‚ΠΎΠΉ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅:

NEW ();

БчитаСтся, Ρ‡Ρ‚ΠΎ послС выполнСния этого ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° создана динамичСская Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, имя ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

:= ^.

ΠŸΡƒΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ имССтся ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΡˆΠ΅ описаниС, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹:

NEW (P1); NEW (P2); NEW (Pm);

ПослС ΠΈΡ… Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ памяти оказываСтся Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ мСсто ΠΏΠΎΠ΄ Ρ‚Ρ€ΠΈ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρ‹ (Π΄Π²Π΅ скалярныС ΠΈ ΠΎΠ΄ΠΈΠ½ массив), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹:

P1^, P2^, Pm^.

НапримСр, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ P1^ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊ: динамичСская пСрСмСнная, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ссылаСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ P1.

Π”Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ°Ρ Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ происходит Ρ‚ΠΎΡ‡Π½ΠΎ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ со ΡΡ‚атичСскими ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ². Им ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ значСния, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Π½Π΄ΠΎΠ² Π² Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΡΡ…, ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ ΠΏΡ€. ΠΠ°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Ссли ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ P1^ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ число 25, ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ P2^ ΠΏΡ€ΠΈΡΠ²ΠΎΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ символа «Write », Π° ΠΌΠ°ΡΡΠΈΠ² Pm^ Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами ΠΎΡ‚ 1 Π΄ΠΎ 100, Ρ‚ΠΎ ΡΡ‚ΠΎ дСлаСтся Ρ‚Π°ΠΊ:

P1^ := 25;

P2^ := «Write » ;

For I := 1 To 100 Do Pm^[I] := I;

ΠšΡ€ΠΎΠΌΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ NEW Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ присваивания:

:= ;

Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ссылочного выраТСния ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ;

ΡΡΡ‹Π»ΠΎΡ‡Π½ΡƒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ (Ρ‚.Π΅. Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ, Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ являСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ);

константу Nil.

Nil — это зарСзСрвированная константа, ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π°ΡŽΡ‰Π°Ρ ΠΏΡƒΡΡ‚ΡƒΡŽ ссылку, Ρ‚. Π΅. ссылку, которая Π½ΠΈ Π½Π° Ρ‡Ρ‚ΠΎ Π½Π΅ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚. ΠŸΡ€ΠΈ присваивании Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ указатСля ΠΈ ΡΡΡ‹Π»ΠΎΡ‡Π½ΠΎΠ³ΠΎ выраТСния Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹. ΠšΠΎΠ½ΡΡ‚Π°Π½Ρ‚Ρƒ Nil ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŽ с Π»ΡŽΠ±Ρ‹ΠΌ Π±Π°Π·ΠΎΠ²Ρ‹ΠΌ Ρ‚ΠΈΠΏΠΎΠΌ.

Π”ΠΎ ΠΏΡ€ΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΡ значСния ссылочной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ (с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ NEW) ΠΎΠ½Π° являСтся Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ.

Π’Π²ΠΎΠ΄ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ Π΄ΠΎΠΏΡƒΡΠΊΠ°Π΅Ρ‚ся.

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€. ΠŸΡƒΡΡ‚ΡŒ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ описаны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ:

Var D, P: ^Integer;

K: ^Boolean;

Π’ΠΎΠ³Π΄Π° допустимыми ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ присваивания

D := P; K := Nil;

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ соотвСтствия Ρ‚ΠΈΠΏΠΎΠ². ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ K := D ΠΎΡˆΠΈΠ±ΠΎΡ‡Π΅Π½, Ρ‚.ΠΊ. Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ‚ΠΈΠΏΡ‹ Ρƒ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΈ Π»Π΅Π²ΠΎΠΉ части Ρ€Π°Π·Π½Ρ‹Π΅.

Если динамичСская Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π° тСряСт свой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Ρ‚ΠΎ ΠΎΠ½Π° становится «ΠΌΡƒΡΠΎΡ€ΠΎΠΌ ». Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΏΠΎΠ΄ этим словом ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, которая Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½ΠΎ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Π°.

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΡŒΡ‚Π΅ сСбС, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ описанныС Π²Ρ‹ΡˆΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² записано ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅:

NEW (D); NEW (P);

{Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΎ мСсто Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ памяти ΠΏΠΎΠ΄ Π΄Π²Π΅ Ρ†Π΅Π»Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠ»ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ значСния}.

D^ := 3; P^ := 5;

{ДинамичСским ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ присвоСны значСния}.

P := D;

{Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ P ΠΈ D ΡΡ‚Π°Π»ΠΈ ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ΄Π½Ρƒ ΠΈ Ρ‚Ρƒ ΠΆΠ΅ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Ρƒ, Ρ€Π°Π²Π½ΡƒΡŽ 3}.

WriteLn (P^, D^); {Π”Π²Π°ΠΆΠ΄Ρ‹ напСчатаСтся число 3}.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, динамичСская Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°, равная 5, потСряла свой ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ ΠΈ ΡΡ‚Π°Π»Π° нСдоступной. Однако мСсто Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΎΠ½Π° Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚. Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ возникновСния «ΠΌΡƒΡΠΎΡ€Π° ». На ΡΡ…Π΅ΠΌΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»ΠΎ Π² Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ выполнСния ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° P := D.

Π’ ΠŸΠ°ΡΠΊΠ°Π»Π΅ имССтся стандартная ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Ρ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΎΡ‚ Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΡ‚ΠΏΠ°Π»Π°. Π•Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚:

DISPOSE ();

НапримСр, Ссли динамичСская пСрСмСнная P^ большС Π½Π΅ Π½ΡƒΠΆΠ½Π°, Ρ‚ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€

DISPOSE (P).

ΡƒΠ΄Π°Π»ΠΈΡ‚ Π΅Π΅ ΠΈΠ· ΠΏΠ°ΠΌΡΡ‚ΠΈ. ПослС этого Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ указатСля P ΡΡ‚ановится Π½Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ. ОсобСнно сущСствСнным становится эффСкт экономии памяти ΠΏΡ€ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… массивов.

Π’ Π²Π΅Ρ€ΡΠΈΡΡ… Π’ΡƒΡ€Π±ΠΎ-Паскаля, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… ΠΏΠΎΠ΄ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой MS DOS, ΠΏΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ выдСляСтся 64 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π° памяти (ΠΈΠ»ΠΈ, Ссли Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΡ‡Π½Π΅Π΅, 65 520 Π±Π°ΠΉΡ‚). Π­Ρ‚ΠΎ ΠΈ Π΅ΡΡ‚ΡŒ статичСская ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти. ΠŸΡ€ΠΈ нСобходимости Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π±ΠΎΠ»ΡŒΡˆΠΈΠΌΠΈ массивами ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ этого ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ°Π»ΠΎ. Π Π°Π·ΠΌΠ΅Ρ€ динамичСской памяти — ΠΌΠ½ΠΎΠ³ΠΎ большС (сотни ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ использованиС динамичСской памяти позволяСт сущСствСнно ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ объСм ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚Ρ‡Π΅Ρ‚Π»ΠΈΠ²ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ Ρ€Π°Π±ΠΎΡ‚Π° с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ замСдляСт Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ доступ ΠΊ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π΅ происходит Π² Π΄Π²Π° шага: сначала ищСтся ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π·Π°Ρ‚Π΅ΠΌ ΠΏΠΎ Π½Π΅ΠΌΡƒ — Π²Π΅Π»ΠΈΡ‡ΠΈΠ½Π°. Как это часто Π±Ρ‹Π²Π°Π΅Ρ‚, дСйствуСт «Π·Π°ΠΊΠΎΠ½ сохранСния нСприятностСй »: Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π² ΠΏΠ°ΠΌΡΡ‚ΠΈ компСнсируСтся ΠΏΡ€ΠΎΠΈΠ³Ρ€Ρ‹ΡˆΠ΅ΠΌ Π²ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€. Π”Π°Π½ тСкстовый Ρ„Π°ΠΉΠ» Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 64 Кб, содСрТащий Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ числа, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ строкС. ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ содСрТимоС Ρ„Π°ΠΉΠ»Π° Π² ΠΌΠ°ΡΡΠΈΠ², размСстив Π΅Π³ΠΎ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈ распрСдСляСмой памяти. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ элСмСнтов массива. ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ†Π΅Π»Ρ‹ΠΉ массив Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ 10 000, Π·Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π΅Π³ΠΎ случайными Ρ†Π΅Π»Ρ‹ΠΌΠΈ числами Π² Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π΅ ΠΎΡ‚ -100 Π΄ΠΎ 100 ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ Π΅Π³ΠΎ срСднСС Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅.

{Π―Π·Ρ‹ΠΊ Turbo Pascal}.

Program Srednee;

Const NMax = 10 000;

Type Diapazon = 1. NMax;

MasInt = Array[Diapazon] Of Integer;

MasReal = Array[Diapazon] Of Real;

Var PIint: ^MasInt; PReal: ^MasReal;

I, Midint: longInt; MidReal: Real; T: Text; S: string;

Begin.

Write («Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя Ρ„Π°ΠΉΠ»Π°: »); ReadLn (S);

Assign (T, S); Reset (T); MidReal := 0; MidInt := 0;

Randomize;

NEW (PReal); {Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ вСщСствСнный массив}.

{Π’Π²ΠΎΠ΄ ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСщСствСнного массива}.

While Not Eof (T) Do.

Begin ReadLn (T, PReal^[I]); MidReal := MidReal + PReal^[I] End;

DISPOSE (PReal); {Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ вСщСствСнного массива}.

NEW (PInt); {Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ Ρ†Π΅Π»Ρ‹ΠΉ массив}.

{ВычислСниС ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ массива}.

For I := 1 To NMax Do.

Begin PInt^[I] := -100 + Random (201); MidInt := MidInt + PInt^[I] End;

{Π’Ρ‹Π²ΠΎΠ΄ срСдних Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ}.

WriteLn («ΡΡ€Π΅Π΄Π½Π΅Π΅ Ρ†Π΅Π»ΠΎΠ΅ Ρ€Π°Π²Π½ΠΎ: », MidInt Div NMax);

WriteLn («ΡΡ€Π΅Π΄Π½Π΅Π΅ вСщСствСнноС Ρ€Π°Π²Π½ΠΎ: », (MidReal / NMax): 10: 6).

End.

// Π―Π·Ρ‹ΠΊ C++.

#include < stdio. h >

#include < time. h >

#include < stdlib. h >

#include < iostream. h >

#define NMax 10 000.

typedef int MasInt;

typedef float MasReal;

MasInt *PInt; MasReal *PReal;

int I, n, MidInt; float MidReal; char S[255];

FILE *t; char *endptr;

void main ().

{ cout > S;

t=fopen (S, «r »);

MidReal = 0; MidInt = 0;

randomize (); I=0;

/*Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ вСщСствСнный массив*/.

PReal = (MasReal*) malloc (sizeof (MasReal));

/*Π’Π²ΠΎΠ΄ ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ вСщСствСнного массива*/.

while (!feof (t)).

{fgets (S, 255, t); // Π²Π²ΠΎΠ΄ΠΈΠΌ ΠΈΠ· Ρ„Π°ΠΉΠ»Π° строку.

PReal[I] = strtod (S, &endptr); // ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅ΠΌ Π²Π²Π΅Π΄Π΅Π½Π½ΡƒΡŽ строку Π² Π²Π΅Ρ‰Π΅ΡΡ‚Π²Π΅Π½Π½ΠΎΠ΅ число.

MidReal += PReal[I]; I++;}.

n=I+1;

free (PReal); /*Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ вСщСствСнного массива*/.

PInt = (MasInt*) malloc (sizeof (MasInt)); /*Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти ΠΏΠΎΠ΄ Ρ†Π΅Π»Ρ‹ΠΉ массив*/.

/* ВычислСниС ΠΈ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Ρ†Π΅Π»ΠΎΠ³ΠΎ массива */.

for (I=0; I < NMax; I++).

{ PInt[I] = -100 + random (201);

MidInt += PInt[I]; }.

/*Π’Ρ‹Π²ΠΎΠ΄ срСдних Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ*/.

cout Next=First; First=Vsp;

return First;

}.

Zveno *Iz_Nachala (Zveno *First).

{ Zveno *Vsp;

Vsp=First->Next;

free (First);

return Vsp;

}.

Zveno *V_Spisok (Zveno *Pred, BT X).

{ Zveno *Vsp;

Vsp = (Zveno *) malloc (sizeof (Zveno));

Vsp->Inf=X;

Vsp->Next=Pred->Next;

Pred->Next=Vsp;

return Vsp;

}.

BT Iz_Spiska (Zveno *Pred).

{ BT X;

Zveno *Vsp;

Vsp=Pred->Next;

Pred->Next=Pred->Next->Next;

X=Vsp->Inf;

free (Vsp);

return X;

}.

void Print (Zveno *First).

{ Zveno *Vsp;

Vsp=First;

while (Vsp).

{cout Inf Next;}.

cout 0.

Then If S2 = Nil.

Then Begin V_Nachalo (S2, V1^.Inf); V2 := S2 End.

Else Begin V_Spisok (V2, V1^.Inf); V2 := V2^.Next End;

If V1^.Inf < 0.

Then If S3 = Nil.

Then Begin V_Nachalo (s3, V1^.Inf); V3 := S3 End.

Else Begin V_Spisok (V3, V1^.Inf); V3 := V3^.Next End;

V1:= V1^.Next.

End;

WriteLn («Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ список ΠΈΠ· ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов: »); Print (S2);

WriteLn («Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ список ΠΈΠ· ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… элСмСнтов: »); Print (S3);

Ochistka (S1); Ochistka (S2); Ochistka (S3);

End.

// ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π½Π° C++.

#include «SPIS.CPP «.

void main ().

{Zveno *S1, *S2, *S3, *V1, *V2, *V3;

BT a; int i, n;

clrscr ();

randomize ();

S1=NULL;

// создаём ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ элСмСнт.

a=-100+random (201);

S1=V_Nachalo (S1, a);

n=1+random (20);

// Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΠ΅ΠΌ список ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎΠΉ Π΄Π»ΠΈΠ½Ρ‹ ΠΈ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ Π½Π° ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ.

V1=S1;

for (i=2; iInf > 0).

if (!S2).

{S2=V_Nachalo (S2, V1->Inf); V2 = S2;}.

else {V_Spisok (V2, V1->Inf); V2 = V2->Next;};

if (V1->Inf < 0).

if (!S3).

{S3=V_Nachalo (S3, V1->Inf); V3 = S3;}.

else {V_Spisok (V3, V1->Inf); V3 = V3->Next;};

V1= V1->Next;}.

cout.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ