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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм динамичСской памяти

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

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ с использованиСм динамичСской памяти (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

1. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2. ИспользованиС динамичСских структур ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ

2.1. Бпособы прСдставлСния Π³Ρ€Π°Ρ„ΠΎΠ²

2.2. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π³Ρ€Π°Ρ„Π°ΠΌΠΈ

2.3. ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

2.3.1. ОписаниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка

2.3.2. ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π³Ρ€Π°Ρ„Π°ΠΌΠΈ

Π’Ρ‹Π²ΠΎΠ΄Ρ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, А Π­ΠΊΡ€Π°Π½Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘ Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1 ΠŸΠžΠ‘Π’ΠΠΠžΠ’ΠšΠ Π—ΠΠ”ΠΠ§Π˜

Π—Π°Π΄Π°Ρ‡Π°.

Найти всС источники ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°.

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

— Π½ΠΎΠΌΠ΅Ρ€ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ (Ρ†Π΅Π» Ρ‚ΠΈΠΏΠ°), Π²Π²ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ;

— Π΄ΡƒΠ³Π° Π³Ρ€Π°Ρ„Π°, задаСтся двумя Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ источником ΠΈ ΡΡ‚ΠΎΠΊΠΎΠΌ, вводимая ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ.

ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅:

Head:TUk — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π³ΠΎΠ»ΠΎΠ²Ρƒ списка смСТности Π³Ρ€Π°Ρ„Π°;

n, m: Ρ†Π΅Π» — Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½;

c:сим — клавиша события.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹:

V:массив Π±Π°ΠΉΡ‚ — массив Π²Π΅Ρ€ΡˆΠΈΠ½ источников;

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡ:

max=10 — максимальноС количСство Π²Π΅Ρ€ΡˆΠΈΠ½;

V:массив [1.max*max].

2. ИспользованиС динамичСских структур ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ

2.1 Бпособы прСдставлСния Π³Ρ€Π°Ρ„ΠΎΠ²

Бпособы задания Π³Ρ€Π°Ρ„ΠΎΠ²:

ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности;

ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности;

список смСТности;

список Π΄ΡƒΠ³ (Ρ€Π΅Π±Π΅Ρ€);

ΠΈ Π΄Ρ€.

Бписок смСТности — для Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v Π΅ΡΡ‚ΡŒ список ΠΊΠΎΠ½Ρ†ΠΎΠ² Π΄ΡƒΠ³, исходящих ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ v, Π² ΡΠ»ΡƒΡ‡Π°Π΅ ΠΎΡ€Π³Ρ€Π°Ρ„Π°, ΠΈΠ»ΠΈ список смСТных с v Π²Π΅Ρ€ΡˆΠΈΠ½, Π² ΡΠ»ΡƒΡ‡Π°Π΅ Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π°.

Бписок Π΄ΡƒΠ³ — это список, Π² ΠΊΠΎΡ‚ΠΎΠΌ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π΄ΡƒΠ³Π΅ ставится Π² ΡΠΎΠΎΡ‚вСтствиС ΠΏΠ°Ρ€Π°, Π³Π΄Π΅ x — Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΡƒΠ³ΠΈ, Π° y — Π΅Π΅ ΠΊΠΎΠ½Π΅Ρ†. Для Π½Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ² — Ρ‚Ρ€ΠΎΠΉΠΊΠ°, Π³Π΄Π΅ x — Π½Π°Ρ‡Π°Π»ΠΎ Π΄ΡƒΠ³ΠΈ, y — ΠΊΠΎΠ½Π΅Ρ† Π΄ΡƒΠ³ΠΈ, z — вСс Π΄ΡƒΠ³ΠΈ.

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности — это квадратная ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, строки ΠΈ ΡΡ‚ΠΎΠ»Π±Ρ†Ρ‹ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌ Π³Ρ€Π°Ρ„Π°. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ (i, j) Ρ€Π°Π²Π΅Π½ 1, Ссли Π²Π΅Ρ€ΡˆΠΈΠ½Π° i ΡΠ²ΡΠ·Π°Π½Π° с Π²Π΅Ρ€ΡˆΠΈΠ½ΠΎΠΉ j Ρ€Π΅Π±Ρ€ΠΎΠΌ, ΠΈΠ½Π°Ρ‡Π΅ элСмСнт ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Ρ€Π°Π²Π΅Π½ 0.

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

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности — это ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°, строки ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ — список Π²Π΅Ρ€ΡˆΠΈΠ½, Π° ΡΡ‚ΠΎΠ»Π±Ρ†Ρ‹ — список Ρ€Π΅Π±Π΅Ρ€. Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ†ΠΈΠΉ (i, j) Ρ€Π°Π²Π΅Π½ 1, Ссли Π²Π΅Ρ€ΡˆΠΈΠ½Π° i ΠΈΠ½Ρ†ΠΈΠ΄Π΅Π½Ρ‚Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌΡƒ Ρ€Π΅Π±Ρ€Ρƒ.

Для Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ²:

Для ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π³Ρ€Π°Ρ„ΠΎΠ²:

НапримСр, Π΄Π°Π½ Π³Ρ€Π°Ρ„ G (см. Ρ€ΠΈΡ. .1)

Рисунок 2.1 — Π“Ρ€Π°Ρ„ G

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° списком смСТности ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.2

Рисунок 2.2 — Бписок смСТности Π³Ρ€Π°Ρ„Π° G

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ списка Π΄ΡƒΠ³ ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΈΠ΄ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ .3

Рисунок 2.3 — Бписок Π΄ΡƒΠ³ Π³Ρ€Π°Ρ„Π° G

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ смСТности ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.1

Π’Π°Π±Π»ΠΈΡ†Π° 2.1 — ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности

x1

x2

x3

x4

x5

x6

x1

x2

x3

x4

x5

x6

ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ инцидСнтности ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2.2

Π’Π°Π±Π»ΠΈΡ†Π° 2.2 — ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности

x1x2

x1x3

x3x2

x3x4

x3x5

x4x5

x5x6

x6x4

x1

x2

— 1

— 1

x3

— 1

x4

— 1

— 1

x5

— 1

— 1

x6

— 1

2.2 ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π°Π΄ Π³Ρ€Π°Ρ„Π°ΠΌΠΈ ΠŸΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ для прСдставлСния Π³Ρ€Π°Ρ„Π° Π±Ρ‹Π» Π²Ρ‹Π±Ρ€Π°Π½ список смСТности.

type TUk1=^TEl1; //элСмСнт списка Π²Π΅Ρ€ΡˆΠΈΠ½

TEl1=record

Next:TUk1;

Inf:integer;

end;

TUk=^TEl;

TEl=record //элСмСнт списка смСТности

Left:TUk1;

Inf:integer;

Down:TUk;

end;

Head:TUk; //ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ списка Π‘Ρ…Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΠ΅ прСдставлСниС списка смСТности ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° прСдставлСно Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.1

Рисунок 2.3 — Π‘Ρ…Π΅ΠΌΠ° списка смСТности Алгоритм нахоТдСния источников ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° прСдставлСн Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 2.4.

Рисунок 2.4 — Алгоритм нахоТдСния источников ΠΎΡ€Π³Ρ€Π°Ρ„Π°

2.3 ОписаниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

2.3.1 ОписаниС ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ языка ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° New — Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΡƒΠ΅Ρ‚ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ ΠΊΡƒΡ‡ΠΈ для размСщСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ; Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ обращСния

New (TP)

TP — Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. Π—Π° ΠΎΠ΄Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ Π±ΠΎ-Π»Π΅Π΅ 65 521 Π±Π°ΠΉΡ‚ Π΄ΠΈΠ½Π°ΠΌΠΈ-чСской памяти. Если Π½Π΅Ρ‚ свободной памяти Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° исполнСния. Если ΠΏΠ°ΠΌΡΡ‚ΡŒ Π½Π΅ Ρ„Ρ€Π°Π³-ΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π°, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ обращСния ΠΊ ΠΏΡ€ΠΎ-Ρ†Π΅Π΄ΡƒΡ€Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ участки памяти, Ρ‚Π°ΠΊ Ρ‡Ρ‚ΠΎ Π½Π°Ρ‡Π°Π»ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ сразу Π·Π° ΠΊΠΎΠ½Ρ†ΠΎΠΌ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ.

ΠŸΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π° Dispose — Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π² ΠΊΡƒΡ‡Ρƒ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ динамичСской памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ Π±Ρ‹Π» Π·Π°Ρ€Π΅Π·Π΅Ρ€Π²ΠΈΡ€ΠΎΠ²Π°Π½ Π·Π° Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΌ; Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ обращСния

Dispose (TP)

TP — Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ. ΠŸΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΆΠ΅ освобоТдСнному Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρƒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ошибка ΠΏΠ΅Ρ€ΠΈΠΎΠ΄Π° исполнСния.

2.3.2 ОписаниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ, Π³Ρ€Π°Ρ„Π°ΠΌΠΈ Для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ поставлСнной Π·Π°Π΄Π°Ρ‡ΠΈ Π±Ρ‹Π»ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Ρ‹ ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

1) procedure AddVer (n:integer); - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ смСТности Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ n;

2) procedure AddDug (n, m: integer); - Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠΏΠΈΡΠΎΠΊ Π΄ΡƒΠ³ΠΈ (n, m). n ΠΈ m Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½ источника Π΄ΡƒΠ³ΠΈ ΠΈ ΡΡ‚ΠΎΠΊΠ° соотвСтствСнно;

3) procedure DelList (p:TUk1); - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ списка смСТных Π²Π΅Ρ€ΡˆΠΈΠ½. p — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ списка;

4) procedure DelVer (n:integer); - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ с Π½ΠΎΠΌΠ΅Ρ€ΠΎΠΌ n;

5) procedure DelDug (n, m: integer); - ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ³ΠΈ (n, m). n ΠΈ m Π½ΠΎΠΌΠ΅Ρ€Π° Π²Π΅Ρ€ΡˆΠΈΠ½ источника Π΄ΡƒΠ³ΠΈ ΠΈ ΡΡ‚ΠΎΠΊΠ° соотвСтствСнно;

6) procedure PrintGraph; - Π²Ρ‹Π²ΠΎΠ΄ списка смСТности Π½Π° ΡΠΊΡ€Π°Π½ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ смСТности;

7) procedure FindIstok; - поиск ΠΈ Π²Ρ‹Π²ΠΎΠ΄ Π½Π° ΡΠΊΡ€Π°Π½ всСх источников ΠΎΡ€Π³Ρ€Π°Ρ„Π°.

Π’Π«Π’ΠžΠ”Π« Π—Π°Π΄Π°Π½ΠΈΠ΅, Π²Ρ‹Π΄Π°Π½Π½ΠΎΠ΅ Π½Π° Π»Π΅Ρ‚Π½ΡŽΡŽ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΡƒ, поставило ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ:

1) научится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ связныС структуры Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ;

2) научится ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ ΠΌΠ°Π½ΠΈΠΏΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ динамичСскими структурами Π΄Π°Π½Π½Ρ‹Ρ…, Ρ‚Π°ΠΊΠΈΠΌΠΈ ΠΊΠ°ΠΊ связныС списки, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΡΡ‚Π΅ΠΊΠΈ;

3) ΠΏΠΎΠ½ΡΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ со ΡΠ²ΡΠ·Π½Ρ‹ΠΌΠΈ структурами Π΄Π°Π½Π½Ρ‹Ρ….

РСшСниС Π²Ρ‹Π΄Π°Π½Π½ΠΎΠ³ΠΎ задания Π±Ρ‹Π»ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ языка программирования Паскаль.

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

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, А Π­ΠšΠ ΠΠΠΠ«Π• ЀОРМЫ Рисунок А.1 — Π“Π»Π°Π²Π½ΠΎΠ΅ мСню ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Рисунок А.2 — Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π΄ΡƒΠ³ΠΈ ΠΎΡ€Π³Ρ€Π°Ρ„Π° Рисунок А.3 — ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности ΠΎΡ€Π³Ρ€Π°Ρ„Π° Рисунок А.4 — Бписок Π²Π΅Ρ€ΡˆΠΈΠ½ источников ΠΎΡ€Π³Ρ€Π°Ρ„Π°

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π‘ Π›Π˜Π‘Π’Π˜ΠΠ“ ΠŸΠ ΠžΠ“Π ΠΠœΠœΠ«

program OrGraph;

uses Crt;

type TUk1=^TEl1;

TEl1=record

Next:TUk1;

Inf:integer;

end;

TUk=^TEl;

TEl=record

Left:TUk1;

Inf:integer;

Down:TUk;

end;

const

max=10;

var

Head:TUk;

c:char;

n, m: integer;

V:array[1.max] of byte;

{————-добавляСм Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π² Π³Ρ€Π°Ρ„——————-}

procedure AddVer (n:integer);

var

p:TUk;

begin

if (Head=Nil) then

begin

New (Head);

Head^.Inf:=n;

Head^.Left:=Nil;

Head^.Down:=Nil;

end else begin

p:=Head;

while ((p^.Down<>Nil)and (p^.Inf<>n)) do p:=p^.Down;

if (p^.Inf=n) then WriteLn ('Вакая Π²Π΅Ρ€ΡˆΠΈΠ½Π° ΡƒΠΆΠ΅ Π΅ΡΡ‚ΡŒ!!!')

else begin

New (p^.Down);

p^.Down^.Inf:=n;

p^.Down^.Left:=Nil;

p^.Down^.Down:=Nil;

end;

end;

end;

{———-добавляСм Π΄ΡƒΠ³Ρƒ Π² Π³Ρ€Π°Ρ„———————————}

procedure AddDug (n, m: integer);

var

p, p1: TUk;

p2:TUk1;

begin

if (Head=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

p:=Head;

while ((p<>Nil)and (p^.Inf<>n)) do p:=p^.Down;

if (p=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ отсутствуСт указанная Π²Π΅Ρ€ΡˆΠΈΠ½Π° источник!!!')

else begin

p1:=Head;

while ((p1<>Nil)and (p1^.Inf<>m)) do p1:=p1^.Down;

if (p1=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ отсутствуСт указанная Π²Π΅Ρ€ΡˆΠΈΠ½Π° сток!!!')

else begin

if (p^.Left=Nil) then

begin

New (p^.Left);

p^.Left^.Inf:=m;

p^.Left^.Next:=Nil;

end else begin

p2:=p^.Left;

while ((p2^.Next<>Nil)and (p2^.Inf<>m)) do p2:=p2^.Next;

if (p2^.Inf=m) then WriteLn ('Указанная Π΄ΡƒΠ³Π° ΡƒΠΆΠ΅ сущСствуСт!!!')

else begin

New (p2^.Next);

p2^.Next^.Inf:=m;

p2^.Next^.Next:=Nil;

WriteLn ('Π”ΡƒΠ³Π° Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π°!!!');

end;

end;

end;

end;

end

end;

{—удаляСм список Π΄ΡƒΠ³—}

procedure DelList (p:TUk1);

var p1: TUk1;

begin

while (p<>Nil) do

begin

p1:=p;

p:=p^.Next;

Dispose (p1);

end;

end;

{————-удаляСм Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ ΠΈΠ· Π³Ρ€Π°Ρ„Π°————-}

procedure DelVer (n:integer);

var

p, p1: TUk;

p2,p3:TUk1;

begin

if (Head=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

p:=Head;

if (p^.Inf=n) then

begin

Head:=Head^.Down;

DelList (p^.Left);

Dispose (p);

end else begin

while ((p^.Down^.Inf<>n)and (p^.Down<>Nil)) do p:=p^.Down;

if (p^.Down=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

DelList (p^.Down^.Left);

p1:=p^.Down;

p^.Down:=p^.Down^.Down;

Dispose (p1);

end;

end;

p:=Head;

while (p<>Nil) do

begin

if (p^.Left^.Inf=n) then

begin

p2:=p^.Left;

p^.Left:=p^.Left^.Next;

Dispose (p2);

end else begin

p2:=p^.Left;

while ((p2^.Next<>Nil)and (p2^.Next^.Inf=n)) do p2:=p2^.Next;

if (p2^.Next^.Inf=n) then

begin

p3:=p2^.Next;

p2^.Next:=p2^.Next^.Next;

Dispose (p3);

end;

end;

p:=p^.Down;

end;

end;

end;

{———удаляСм Π΄ΡƒΠ³Ρƒ Π³Ρ€Π°Ρ„Π°————}

procedure DelDug (n, m: integer);

var

p, p1: TUk;

p2,p3:TUk1;

begin

if (Head=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

p:=Head;

while ((p^.Inf<>n)and (p<>Nil)) do p:=p^.Down;

if (p=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ отсутствуСт указанная Π²Π΅Ρ€ΡˆΠΈΠ½Π° источник')

else begin

p1:=Head;

while ((p1<>Nil)and (p1^.Inf<>m)) do p1:=p1^.Down;

if (p1=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ отсутствуСт указанная Π²Π΅Ρ€ΡˆΠΈΠ½Π° сток!!!')

else begin

p2:=p^.Left;

if (p^.Left^.Inf=m) then

begin

p3:=p^.Left;

p^.Left:=p^.Left^.Next;

Dispose (p3);

end else begin

while ((p2^.Next^.Inf<>m)and (p2^.Next<>Nil)) do p2:=p2^.Next;

if (p2=Nil) then WriteLn ('Π£ΠΊΠ°Π·Π°Π½Π½ΠΎΠ³ΠΎ Ρ€Π΅Π±Ρ€Π° Π½Π΅Ρ‚ Π² Π³Ρ€Π°Ρ„Π΅!!!')

else begin

p3:=p2^.Next;

p2^.Next:=p2^.Next^.Next;

Dispose (p3);

end;

end;

end;

end;

end;

end;

{—-Π’Ρ‹Π²ΠΎΠ΄ Π³Ρ€Π°Ρ„Π° Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ смСТности———}

procedure PrintGraph;

var

i, j, n:integer;

M:array [1.max, 1. max] of byte;

p:TUk;

p2:TUk1;

begin

for i:=1 to max do

for j:=1 to max do M[i, j]: =0;

n:=0;

if (Head=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

p:=Head;

while (p<>Nil) do

begin

inc (n);

p2:=p^.Left;

while (p2<>Nil) do

begin

M[p^.Inf, p2^.Inf]: =1;

p2:=p2^.Next;

end;

p:=p^.Down;

end;

end;

for i:=1 to n do

begin

for j:=1 to n do Write (M[i, j]: 2);

WriteLn;

end;

end;

{——-Π½Π°Ρ…ΠΎΠ΄ΠΈΠΌ всС источники ΠΎΡ€Π³Ρ€Π°Ρ„Π°——}

procedure FindIstok;

var

f:boolean;

i, k: integer;

Is:array[1.max*max] of byte;

p, p1: TUk;

p2:TUk1;

begin

for i:=1 to max*max do Is[i]: =0;

if (Head=Nil) then WriteLn ('Π’ Π³Ρ€Π°Ρ„Π΅ Π½Π΅Ρ‚ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹!!!')

else begin

k:=0;

p:=Head;

while (p<>Nil) do

begin

if (p^.Left<>Nil) then

begin

f:=true;

p1:=Head;

while (p1<>Nil) do

begin

p2:=p1^.Left;

while ((f)and (p2<>Nil)) do

begin

if p2^.Inf=p^.Inf then f:=false;

p2:=p2^.Next;

end;

p1:=p1^.Down;

end;

if (f=true) then

begin

inc (k);

Is[k]: =p^.Inf;

end;

end;

p:=p^.Down;

end;

end;

for i:=1 to k do Write (Is[i]: 2);

end;

procedure Menu;

begin

WriteLn ('1-ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π³Ρ€Π°Ρ„Π°');

WriteLn ('2-Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π² Π³Ρ€Π°Ρ„');

WriteLn ('3-Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΄ΡƒΠ³Ρƒ Π² Π³Ρ€Π°Ρ„');

WriteLn ('4-Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π³Ρ€Π°Ρ„Π°');

WriteLn ('5-Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π΄ΡƒΠ³Ρƒ Π³Ρ€Π°Ρ„Π°');

WriteLn ('6-Найти источники ΠΎΡ€Π³Ρ€Π°Ρ„Π°');

WriteLn ('7-Π’Ρ‹Ρ…ΠΎΠ΄');

end;

{————основная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°————}

begin

ClrScr;

repeat

clrscr;

Menu;

c:=ReadKey;

case c of

'1': begin

ClrScr; PrintGraph; ReadKey;

end;

'2': begin

ClrScr;

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ: ');

ReadLn (n); AddVer (n);

end;

'3': begin

ClrScr;

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ источник Π΄ΡƒΠ³ΠΈ: ');

ReadLn (n);

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ сток Π΄ΡƒΠ³ΠΈ: ');

ReadLn (m); AddDug (n, m);

end;

'4': begin

ClrScr;

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΡƒΠ΄Π°Π»ΡΠ΅ΠΌΡƒΡŽ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ: ');

ReadLn (n); DelVer (n);

end;

'5': begin

ClrScr;

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ источник удаляСмой Π΄ΡƒΠ³ΠΈ: ');

ReadLn (n);

Write ('Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ сток удаляСмой Π΄ΡƒΠ³ΠΈ: ');

ReadLn (m); DelDug (n, m);

end;

'6': begin

ClrScr; FindIstok; ReadKey;

end;

'7': begin

halt;

end;

end;

until ord (c)=27;

end.

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