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

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

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

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π² ΠΌΠ°ΡΡΠΈΠ², Π° Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Если ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ адрСс ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ элСмСнта, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Вакая организация прСдставлСния ΠΈ Ρ…ранСния Π΄Π°Π½Π½Ρ‹Ρ… называСтся динамичСской структурой… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

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

http://www..ru/

http://www..ru/

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

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅ динамичСская структура Π΄Π°Π½Π½ΠΎΠ΅

  • 1.УсловиС задания
  • 2.ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ…
    • 2.1 ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…
    • 2.2 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„икация динамичСских структур Π΄Π°Π½Π½Ρ‹Ρ…
    • 2.3 Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ односвязный список
    • 2.4 ДвухсвязныС Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ списки
    • 2.5 ΠšΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ список
    • 2.6 ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ
  • 3.Π‘Ρ‚Π΅ΠΊΠΈ
  • 4.ОписаниС основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ
  • 5.Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • 6.ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹
  • Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

1.УсловиС задания

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

ΠΠ°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ, которая ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΡƒΠ΅Ρ‚ процСсс прибытия ΠΈ ΠΎΡ‚ΡŠΠ΅Π·Π΄Π° машин. ΠŸΡ€ΠΈΠ±Ρ‹Ρ‚ΠΈΠ΅ ΠΈΠ»ΠΈ ΠΎΡ‚ΡŠΠ΅Π·Π΄ Π°Π²Ρ‚ΠΎΠΌΠ°ΡˆΠΈΠ½Ρ‹ задаСтся ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ строкой, которая содСрТит ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ прибытия ΠΈΠ»ΠΈ ΠΎΡ‚ΡŠΠ΅Π·Π΄Π° ΠΈ Π½ΠΎΠΌΠ΅Ρ€ ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ΡŒ сообщСниС ΠΏΡ€ΠΈ ΠΏΡ€ΠΈΠ±Ρ‹Ρ‚ΠΈΠΈ ΠΈΠ»ΠΈ Π²Ρ‹Π΅Π·Π΄Π΅ любой ΠΌΠ°ΡˆΠΈΠ½Ρ‹. ΠŸΡ€ΠΈ Π²Ρ‹Π΅Π·Π΄Π΅ Π°Π²Ρ‚ΠΎΠΌΠ°ΡˆΠΈΠ½Ρ‹ со ΡΡ‚оянки сообщСниС Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ число Ρ€Π°Π·, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ машина ΡƒΠ΄Π°Π»ΡΠ»Π°ΡΡŒ со ΡΡ‚оянки для обСспСчСния Π²Ρ‹Π΅Π·Π΄Π° Π΄Ρ€ΡƒΠ³ΠΈΡ… Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»Π΅ΠΉ.

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

2.1 ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π΄Π°Π½Π½Ρ‹Ρ…

ΠŸΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… случаях достаточно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ простыС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ ΠΌΠ°ΡΡΠΈΠ²Ρ‹. ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Ρ‚Π°ΠΊΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ выдСляСтся Π»ΠΈΠ±ΠΎ Π½Π° ΡΡ‚Π°ΠΏΠ΅ компиляции, Π»ΠΈΠ±ΠΎ Π½Π° ΡΡ‚Π°ΠΏΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ ΠΎΠ±Π° эти способа Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ выдСлСния памяти ΠΏΠΎΠ΄ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹ΠΉ массив:

Π°) ΠŸΠ°ΠΌΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΡ‚Π°ΠΏΠ΅ компиляции:

const int N = 5;

int x1[N];

Π±) ΠŸΠ°ΠΌΡΡ‚ΡŒ Π²Ρ‹Π΄Π΅Π»Π΅Π½Π° Π½Π° ΡΡ‚Π°ΠΏΠ΅ исполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ new:

int *x2;

int n;

do{

cout << «n=»;

cin >> n;

}while (n <= 0);

x2 = new int[n];

Π’Π΅ΠΏΠ΅Ρ€ΡŒ массивы x1 ΠΈ x2 ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π·Π°Π΄Π°Ρ‚ΡŒ значСния элСмСнтам этих массивов.

Но Π² ΠΎΠ±ΠΎΠΈΡ… случаях послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ массивы Π²Ρ‹Π΄Π΅Π»Π΅Π½Π°, ΠΌΡ‹ Π½Π΅ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ этих массивов ΠΏΠΎ ΡΠ²ΠΎΠ΅ΠΌΡƒ ΡƒΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΡŽ. Если Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹ΠΌ, Ρ‚ΠΎ ΡΡ‚ΠΎ справСдливо Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для случая Π°). Для Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π±) ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΌΠΎΠΆΠ½ΠΎ. Но ΠΊΠ°ΠΊΠΎΠΉ Ρ†Π΅Π½ΠΎΠΉ?! ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ измСнСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° динамичСского массива:

//ΠΏΡƒΡΡ‚ΡŒ k — Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ массива

int k = n + 1;

// выдСляСм Π½ΠΎΠ²Ρ‹ΠΉ участок памяти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°

int *t = new int[k];

// пСрСписываСм Π² Π½Π΅Π³ΠΎ содСрТимоС исходного массива x2

for (int i = 0; i < k && i < n; i++)

t[i] = x2[i];

// освобоТдаСм ΠΏΠ°ΠΌΡΡ‚ΡŒ, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π» x2

delete []x2;

// настраиваСм x2 Π½Π° Π½ΠΎΠ²Ρ‹ΠΉ участок памяти

x2 = t;

Как Π½Π΅ ΡΠ»ΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°Π½ΠΈΠΌΠ°Ρ‚ΡŒ слишком ΠΌΠ½ΠΎΠ³ΠΎ машинного Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ-Ρ‚ΠΎ Π½Π΅Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΡΡ‚ΡŒ Π·Π°Π½ΠΎΠ²ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Ρ†Π΅Π»Ρ‹ΠΉ массив, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ трСбовался Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ участок всСго для ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта.

2.2 ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈ ΠΊΠ»Π°ΡΡΠΈΡ„икация динамичСских структур Π΄Π°Π½Π½Ρ‹Ρ…

Для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π² ΠΏΡ€ΠΎΡ†Π΅ΡΡΠ΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ»ΡŒΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΈ ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ наши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π΅ Π² ΠΌΠ°ΡΡΠΈΠ², Π° Π² Π½Π΅Ρ‡Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. Если ΠΊ ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρƒ Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π΅Ρ‰Ρ‘ ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ адрСс ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ элСмСнта, Ρ‚ΠΎ ΡΡ‚ΠΎ ΠΈ Π±ΡƒΠ΄Π΅Ρ‚ ΠΊΠ°Ρ€Π΄ΠΈΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. Вакая организация прСдставлСния ΠΈ Ρ…ранСния Π΄Π°Π½Π½Ρ‹Ρ… называСтся динамичСской структурой Π΄Π°Π½Π½Ρ‹Ρ….

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

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

ДинамичСскиС структуры Π΄Π°Π½Π½Ρ‹Ρ… Π±Ρ‹Π²Π°ΡŽΡ‚ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΈ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅. Π’ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ динамичСской структурС Π΄Π°Π½Π½Ρ‹Π΅ ΡΠ²ΡΠ·Ρ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ†Π΅ΠΏΠΎΡ‡ΠΊΡƒ. К Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ структурам относятся списки (односвязныС, двухсвязныС, ΠΊΠΎΠ»ΡŒΡ†Π΅Π²Ρ‹Π΅), стСки, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ (односторонниС, двухсторонниС, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ с ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌΠΈ). ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ Π½Π΅Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… структур Π±ΠΎΠ»Π΅Π΅ слоТная. НСлинСйныС структуры ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Π²ΠΈΠ΄Π΅ Π΄Π΅Ρ€Π΅Π²Π° (ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΈΠΌΠ΅Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ количСство связСй, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² Π±ΠΈΠ½Π°Ρ€Π½ΠΎΠΌ Π΄Π΅Ρ€Π΅Π²Π΅ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт (ΡƒΠ·Π΅Π») ΠΈΠΌΠ΅Π΅Ρ‚ ссылку Π½Π° Π»Π΅Π²Ρ‹ΠΉ ΠΈ ΠΏΡ€Π°Π²Ρ‹ΠΉ элСмСнт).

Рассмотрим Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΈΠ΄Ρ‹ динамичСских структур.

2.3 Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ односвязный список

Π›ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ список — это динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ посрСдством указатСля связываСтся со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ элСмСнтом.

ГрафичСски Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ список ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

Π‘ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ этот Π²ΠΈΠ΄ рассмотрим Π² 3 части.

2.4 ДвухсвязныС Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ списки

Как ΠΌΡ‹ ΡƒΠΆΠ΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠ»ΠΈ, Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ списки ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ односвязными ΠΈ Π΄Π²ΡƒΡ…связными.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт односвязного списка ΠΊΡ€ΠΎΠΌΠ΅ собствСнно Π΄Π°Π½Π½Ρ‹Ρ… содСрТит ΠΏΠΎΠ»Π΅ с Π°Π΄Ρ€Π΅ΡΠΎΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ элСмСнта. Π Π°Π±ΠΎΡ‚Ρƒ с Ρ‚Π°ΠΊΠΈΠΌΠΈ списками ΠΌΡ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ рассмотрСли.

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

2.5 ΠšΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ список

ΠšΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ список — это список, Ρƒ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ послСдний элСмСнт связан с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ. ΠšΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ список ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ односвязным, Ρ‚Π°ΠΊ ΠΈ Π΄Π²ΡƒΡ…связным. Рассмотрим Π²ΠΊΡ€Π°Ρ‚Ρ†Π΅ односвязный ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠΉ список.

Π‘Ρ…Π΅ΠΌΠ° ΠΊΠΎΠ»ΡŒΡ†Π΅Π²ΠΎΠ³ΠΎ списка прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ (ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Ρ‚Π΅ ΠΆΠ΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‡Ρ‚ΠΎ ΠΈ Π΄Π»Ρ Ρ€Π°Π½Π΅Π΅ рассмотрСнного односвязного списка, Ρ‚. Π΅. список ΠΈΠ· Ρ‡ΠΈΡΠ΅Π» 3, 5, 1, 9):

2.6 ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ — это линСйная динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΊΠΎΠ½Π΅Ρ† этой структуры, Π° ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ (ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅) — Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Π½Π°Ρ‡Π°Π»Π°. Π’ Π°Π½Π³Π»ΠΎΡΠ·Ρ‹Ρ‡Π½ΠΎΠΉ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ называСтся FIFO (First Input — First Output, Ρ‚. Π΅. ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΠΏΡ€ΠΈΡˆΡ‘Π» — ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ ΡƒΡˆΡ‘Π»).

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ ΠΈΠ· Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ ΠΆΠΈΠ·Π½ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΈΠ· ΠΏΠΎΠΊΡƒΠΏΠ°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ ΠΊΠ°ΡΡΠ΅ Π² ΠΌΠ°Π³Π°Π·ΠΈΠ½Π΅.

Как Π½Π΅ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ — это Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ список, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ всСго Π΄Π²Π΅ основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΠΊΠΎΠ½Π΅Ρ† ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ с Π½Π°Ρ‡Π°Π»Π°. Π—Π½Π°Ρ‡ΠΈΡ‚, ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π²Π° указатСля: Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ ΠΊΠΎΠ½Π΅Ρ† этой динамичСской структуры. Но ΡΠΏΠΈΡΠΊΠΈ Π±Ρ‹Π²Π°ΡŽΡ‚ односвязныС ΠΈ Π΄Π²ΡƒΡ…связныС. Какой ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ? ΠŸΠΎΠ΄ΠΎΠΉΠ΄Ρ‘Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ двухсвязный список. Π’ ΡΡ‚ΠΎΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈ рассмотрСнии основных Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒΡŽ.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Π½ΠΈΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ графичСскоС прСдставлСниС ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Как ΠΈ Π² ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΡ… Ρ‚Π΅ΠΌΠ°Ρ…, ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π±ΡƒΠ΄Π΅ΠΌ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ· Ρ†Π΅Π»Ρ‹Ρ… чисСл, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: 3, 5, 1.

Всё это Π½Π΅ Ρ‚Π°ΠΊ слоТно Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, поэтому Π½ΠΈ ΠΊΠ°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠ² Π½Π΅ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ся.

3.Π‘Ρ‚Π΅ΠΊΠΈ

ΠžΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ стСка

Π‘Ρ‚Π΅ΠΊ — динамичСская структура Π΄Π°Π½Π½Ρ‹Ρ…, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ выполняСтся ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ: послСдним ΠΏΡ€ΠΈΡˆΡ‘Π» — ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ ΡƒΡˆΡ‘Π». Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…, ΠΈ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΡ… ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° всСгда выполняСтся с ΠΎΠ΄Π½ΠΎΠΉ стороны.

Π’Π΅Ρ€ΡˆΠΈΠ½Π° стСка — эта Ρ‚Π° Π΅Π³ΠΎ Ρ‡Π°ΡΡ‚ΡŒ, Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ вСдётся вся Ρ€Π°Π±ΠΎΡ‚Π°. На Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ стСка Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ элСмСнты, ΠΈ Ρ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка ΡΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ (ΡƒΠ΄Π°Π»ΡΡŽΡ‚ΡΡ) элСмСнты.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, стСк — это односвязный список, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π²Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ: Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ ΠΈΠ· Π½Π°Ρ‡Π°Π»Π° списка.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ стСка ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΊΠΎΡ€ΠΎΠ±ΠΊΠ°, Π² ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ свСрху ΡƒΠΊΠ»Π°Π΄Ρ‹Π²Π°ΡŽΡ‚ ΠΊΠ½ΠΈΠ³ΠΈ. Π˜Π·Π²Π»Π΅ΠΊΠ°Ρ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ Ρ‚Π°ΠΊΠΆΠ΅ приходится свСрху.

ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со ΡΡ‚Π΅ΠΊΠΎΠΌ Рассмотрим основныС ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия со ΡΡ‚Π΅ΠΊΠΎΠΌ. Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ структуры Data ΠΈ Stek:

struct Data

{

int a;

};

struct Stek

{

Data d;

Stek *next;

};

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ опрСдСляСм ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° Π½Π°Ρ‡Π°Π»ΠΎ Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ стСка:

Stek *u = NULL;

ПослС этого ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ‡Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ со ΡΡ‚Π΅ΠΊΠΎΠΌ.

1. Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΡ‚Π΅ΠΊ. Π€ΡƒΠ½ΠΊΡ†ΠΈΡŽ добавлСния Π½Π°Π·ΠΎΠ²Ρ‘ΠΌ Push () — ΠΏΠΎ Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ с ΠΊΠΎΠΌΠ°Π½Π΄ΠΎΠΉ ассСмблСра push, которая заносит Ρ†Π΅Π»ΠΎΠ΅ число Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ стСк.

void Push (Stek **u, Data &x)

{

Stek *t = new Stek; // ΠŸΠ°ΠΌΡΡ‚ΡŒ ΠΏΠΎΠ΄ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт

t->d.a = x. a; // Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ

t->next = *u; // ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Π΅ΠΌ Π½ΠΎΠ²Ρ‹ΠΉ элСмСнт ΠΊ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ

*u = t; // ΠŸΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹

}

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒΡΡ ΠΊ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ Ρ‚Π°ΠΊ:

Push (&u, x);

Π³Π΄Π΅ x — ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ‚ΠΈΠΏΠ° Data.

2. Π˜Π·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅ ΠΈΠ· ΡΡ‚Π΅ΠΊΠ°. Π—Π΄Π΅ΡΡŒ снова аналогия с Π°ΡΡΠ΅ΠΌΠ±Π»Π΅Ρ€ΠΎΠΌ (ΠΊΠΎΠΌΠ°Π½Π΄Π° pop Π²Ρ‹Ρ‚Π°Π»ΠΊΠΈΠ²Π°Π΅Ρ‚ Ρ†Π΅Π»ΠΎΠ΅ число ΠΈΠ· ΡΡ‚Π΅ΠΊΠ°).

bool Pop (Stek **u, Data &x)

{

if (*u == NULL)

{

cout << «Pustoj stek» << endl;

return false;

}

Stek *t = *u;

x.a = t->d.a; // ΠŸΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ значСния ΠΏΠΎΠ»Π΅ΠΉ Π½Π° Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ стСка

*u = t->next; // ΠŸΠ΅Ρ€Π΅Π½Π°ΡΡ‚Ρ€ΠΎΠΉΠΊΠ° Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹

delete t; // Π£Π΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅Π½ΡƒΠΆΠ½ΠΎΠ³ΠΎ элСмСнта

return true;

}

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

Data y;

if (Pop (&u, x))

{

y = x;

cout << «y=» << y. a << endl;

}

Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ дСйствия со ΡΡ‚Π΅ΠΊΠΎΠΌ — распСчатка стСка (ΠΌΠΎΠΆΠ½ΠΎ Π²Π·ΡΡ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΠΎΠ΄Π½ΠΎΡΠ²ΡΠ·Π½Ρ‹ΠΌ списком) ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ с Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка. Π§Ρ‚Π΅Π½ΠΈΠ΅ Π½Π°ΠΏΠΎΠΌΠΈΠ½Π°Π΅Ρ‚ ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Π½ΠΈΠ΅, Π½ΠΎ ΠΏΡ€ΠΈ этом Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»ΡΡŽΡ‚ся. Π’ΠΎΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ:

bool Read (Stek **u, Data &x)

{

if (*u == NULL)

{

cout << «Pustoj stek» << endl;

return false;

}

Stek *t = *u;

x.a = t->d.a; // Π—Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Π΅ΠΉ

return true;

}

ИспользованиС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Read () ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ использованию Pop ().

4.ОписаниС основных Ρ‚ΠΈΠΏΠΎΠ² Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½ΠΈΠΌΠΈ

Для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ хранСния, прСдставлСния Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ 2 структуры: Avto ΠΈ Stek.

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Avto Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для описания всСх ΠΏΠΎΠ»Π΅ΠΉ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π² Π³Π°Ρ€Π°ΠΆΠ΅. Она ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

struct Avto

{

char marka[10];

};

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Stek Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ стСка. Она ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

struct Stek

{

Avto a;

Stek *next;

};

Π³Π΄Π΅

Β· a — ΠΏΠΎΠ»Π΅ Ρ‚ΠΈΠΏΠ° Avto, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ хранятся сами Π΄Π°Π½Π½Ρ‹Π΅;

Β· *next — ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° ΡΡ‚Π΅ΠΊ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Ρ‚ΠΈΠΏΠ°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Stek.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ со ΡΡ‚Π΅ΠΊΠ°ΠΌΠΈ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ всС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹:

Β· void vvod (Avto &x) — Π²Π²ΠΎΠ΄ Π΄Π°Π½Π½Ρ‹Ρ…

Β· void Print (Stek *u) — функция ΠΏΠ΅Ρ‡Π°Ρ‚ΠΈ

Β· void dobavlenie (Stek **u, Avto &x) — Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½ΠΎΠ²ΠΎΠΉ записи Π² ΡΡ‚Π΅ΠΊ

Β· bool Zabiraem (Stek**u, Avto &x) — функция ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅ элСмСнта ΠΈΠ· ΡΡ‚Π΅ΠΊΠ°

Β· void vyezjaet_iz_garaja (Stek**u) — функция Π²Ρ‹Π΅Π·Π΄Π° автомобиля ΠΈΠ· Π³Π°Ρ€Π°ΠΆΠ°

Β· void Clear (Stek **u) — очистка всСго стСка

5.Листинг ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include

#include

#include

using namespace std;

HANDLE hConsole=GetStdHandle (STD_OUTPUT_HANDLE);

struct Avto

{

char marka[10];

};

struct Stek

{

Avto a;

Stek *next;

};

char bufer [255];

char*rus (char*s)

{

CharToOem (s, bufer);

return bufer;

}

void vvod (Avto &x)

{

cin>>x.marka;

}

void Print (Stek *u)

{

int k=0;

Stek *p = u;

if (p==0)

{

cout<<

return;

}

while (p)

{

p->a.marka;

p = p->next;

k++;

}

cout<<5) cout<<

else cout<<

p = u;

SetConsoleTextAttribute (hConsole, 11);

cout<<

while (p)

{

cout<<" t* «;

cout << p->a.marka<

p = p->next;

}

cout<<" t********" <

SetConsoleTextAttribute (hConsole, 7);

}

void dobavlenie (Stek **u, Avto &x)

{

Stek *t=new Stek;

strcpy (t->a.marka, x. marka);

t->next=*u;

*u=t;

}

bool Zabiraem (Stek**u, Avto &x)

{

if (*u==NULL){

return false;

}

Stek*t=*u;

strcpy (x.marka, t->a.marka);

*u=t->next;

delete t;

return true;

}

void vyezjaet_iz_garaja (Stek**u)

{

Stek *v=NULL;

Avto x;

char n[7];

cout<< rus («nt Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρƒ, которая Π²Ρ‹Π΅Π·ΠΆΠ°Π΅Ρ‚:»);

cin>>n;

while (*u)

{

if (Zabiraem (u, x))

{

if (strcmp (n, x. marka)==0)

{

cout<< rus («ΠΌΠ°ΡˆΠΈΠ½Π° «) << n; cout<

while (Zabiraem (&v, x)) /// Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ элСмСнты ΠΈΠ· ΡΡ‚Π΅ΠΊΠ° V Π² ΡΡ‚Π΅ΠΊ U

dobavlenie (u, x);

return;

}

else

{

dobavlenie (&v, x);

}

}

else break;

}

SetConsoleTextAttribute (hConsole, 12);

cout <<

SetConsoleTextAttribute (hConsole, 7);

while (Zabiraem (&v, x))

dobavlenie (u, x);

}

void Clear (Stek **u)

{

if (*u == 0) return;

Stek *p = *u;

Stek *t;

while (p)

{

t = p;

p = p->next;

delete t;

}

*u = 0;

}

int main ()

{

SetConsoleTextAttribute (hConsole, 10);

cout << «t***** * ***** * * * *» << endl;

cout << «t* * * * * * * * * * «<< endl;

cout << «t* * * * * * * *** «<< endl;

cout << «t* ***** ***** ***** *** «<< endl;

cout << «t* * * * * * * * * «<< endl;

cout << «t* * * * * * * * *» << endl;

SetConsoleTextAttribute (hConsole, 7);

cout << «n» << endl;

Stek *u=NULL;

int n;

Avto x; //пСрСмСнная x Ρ‚ΠΈΠΏΠ° avto

do{

SetConsoleTextAttribute (hConsole, 14);

cout<<

cout<<

cout<<

cout<<

cout<<

cout<<

cout<

cin>>n;

SetConsoleTextAttribute (hConsole, 7);

switch (n)

{

case 1: cout<

dobavlenie (&u, x); cout<

case 2: Print (u); break;

case 3: Print (u); vyezjaet_iz_garaja (&u); break;

case 0: Clear (&u); break;

default: SetConsoleTextAttribute (hConsole, 12);

cout<<

SetConsoleTextAttribute (hConsole, 7);

}

cout<

}while (n≠0);

return 0;

}

6.ΠŸΡ€ΠΈΠΌΠ΅Ρ€ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

1. И. Π¨. Π₯Π°Π±ΠΈΠ±ΡƒΠ»Π»ΠΈΠ½ ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ C++: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — 3-Π΅ ΠΈΠ·Π΄. — Π‘Пб.: Π‘Π₯Π’-ΠŸΠ΅Ρ‚Π΅Ρ€Π±ΡƒΡ€Π³, 2006. — 512 с.

2. Π‘Π°ΠΉΡ‚: www. victor192007.narod.ru

3. ΠšΠΎΠ½ΡΠΏΠ΅ΠΊΡ‚ Π»Π΅ΠΊΡ†ΠΈΠΉ ΠΏΠΎ Π΄ΠΈΡΡ†ΠΈΠΏΠ»ΠΈΠ½Π΅ «ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° ΡΠ·Ρ‹ΠΊΠ°Ρ… высокого уровня».

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