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

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ «ВстраиваСмыС систСмы. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΌΠΈΠΊΡ€ΠΎΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π°Ρ… сСмСйства 68HC12/HCS12 с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ языка Π‘Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 127

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π‘Π°Ρ€Ρ€Π΅Ρ‚Ρ‚

 printf("\n\nSearch for car in stock.");

 printf("\nEnter make of car to search for in list. ");

 scanf("%s", search_make);

 /*Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΏΠΎ списку */

 for(temp_ptr-search_list; temp_ptr!=NULL; temp_ptr=temp_ptr->next) {

  if (strcmp(temp_ptr->make, search_make) == 0) {

   printf("\n\nyear: %4d", temp_ptr->year); /*Π³ΠΎΠ΄ изготовлСния */

   printf("\nmake: %s", temp_ptr->make); /*ΠΈΠ·Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚Π΅Π»ΡŒ */

   printf("\nmodel: %s", temp_ptr->model); /*модСль */

   printf("\nVIN: %s", temp_ptr->VIN); /*Π½ΠΎΠΌΠ΅Ρ€ */

   printf("\nMileage: %6.0f ", temp_ptr->mileage);

   /*ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ показания ΠΎΠ΄ΠΎΠΌΠ΅Ρ‚Ρ€Π°*/

  }

 }

}

/********************************************************************/

/********************************************************************/

ПослС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° дисплСС появится ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ сообщСниС.

year: 1981

make: Chevy

model: Camaro

VIN: 12Z367

mileage: 37456


year: 1974

make: Ford

model: Mustang11

VIN: 3L265ST

mileage: 122456


year: 1997

make: Saturn

model: SL1

VIN: 234TH67

mileage: 140512


year: 1981

make: Chevy

model: Camaro

VIN: 12Z367

mileage: 37456


year: 1974

make:Ford

model: Mustang11

VIN: 3L265ST

mileage: 122456


year: 2002

make: Hummer

model: H2

VIN: 73H2L7

mileage: 13


year: 1997

make: Saturn

model: SL1

VIN: 234TH67

mileage: 140512


Π£Π΄Π°Π»Π΅Π½Ρ‹ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΠΈ ΠΈΠ· списка для ΠΏΡ€ΠΎΠ΄Π°ΠΆ.

Π’Π²Π΅Π΄Π΅Π½ΠΎ ΠΏΠΎΠ»Π΅ make для удалСния ΠΈΠ· списка – Hummer


year: 1981

make: Chevy

model: Camaro

VIN: 12Z367

mileage: 37456


year: 1974

make: Ford

model: Mustang11

VIN: 3L265ST

mileage: 122456


year: 1997

make: Saturn

model: SL1

VIN: 234TH67

mileage: 140512


НайдСн Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ Π² спискС ΠΏΡ€ΠΎΠ΄Π°ΠΆ.

Π’Π²Π΅Π΄Π΅Π½Π½ΠΎΠ΅ ΠΏΠΎΠ»Π΅ make для поиска – Saturn


year: 1997

make: Saturn

model: SL1

VIN: 234TH67

mileage: 140512

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

ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ. ΠžΡ‡Π΅Ρ€Π΅Π΄ΡŒ прСдставляСт собой особым ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ сконфигурированный список с указатСлями. Она называСтся Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΡ„Π΅Ρ€ΠΎΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ-вошСл-ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ-Π²Ρ‹ΡˆΠ΅Π» (first-in first out β€” FIFO). Π­Π»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ Π² хвост ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ ΠΈΠ·Π²Π»Π΅ΠΊΠ°ΡŽΡ‚ΡΡ с Π³ΠΎΠ»ΠΎΠ²Ρ‹, ΠΊΠ°ΠΊ ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° рис. 8.8. ВСрнСмся ΠΊ нашСй Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒΠ½ΠΎΠΉ коммСрчСской Π°Π½Π°Π»ΠΎΠ³ΠΈΠΈ. Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Ρ‹ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°Π΅Ρ‚Π΅ Π°Π²Ρ‚ΠΎΠΌΠΎΠ±ΠΈΠ»ΡŒ, Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² Π΄Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚Π΅ транспортных срСдств. Π― Π±Ρ‹Π» Ρ‚Π°ΠΌ Π½Π΅Π΄Π°Π²Π½ΠΎ с ΠΌΠΎΠΈΠΌ сыном, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ Π½ΡƒΠΆΠ½Ρ‹ Π±Ρ‹Π»ΠΎ Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΈΠ΅ ΠΏΡ€Π°Π²Π°. ПослС нашСго ΠΏΡ€ΠΈΡ…ΠΎΠ΄Π° ΠΌΡ‹ встали Π² хвост ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ стали ΠΆΠ΄Π°Ρ‚ΡŒ, ΠΏΠΎΠΊΠ° нас обслуТат. ПослС ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠ³ΠΎ оТидания, ΠΌΡ‹ достигли Π³ΠΎΠ»ΠΎΠ²Ρ‹ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈ смогли ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ ΠΏΡ€Π°Π²Π°. Нас обслуТивали Π² порядкС прохоТдСния ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ. Π’ΠΎ врСмя ΠΏΠΈΠΊΠ° занятости, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ часы, Π² ΠΊΠΎΠ½Ρ†Π΅ мСсяца β€” ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π² Π΄Π΅ΠΏΠ°Ρ€Ρ‚Π°ΠΌΠ΅Π½Ρ‚Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‡Π΅Π½ΡŒ Π΄Π»ΠΈΠ½Π½ΠΎΠΉ. Π’ Π±ΠΎΠ»Π΅Π΅ свободноС врСмя ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ совсСм ΠΊΠΎΡ€ΠΎΡ‚ΠΊΠΎΠΉ. Π’ ΠΎΠ±ΠΎΠΈΡ… случаях ΠΌΡ‹ Π²ΠΈΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ фиксированного числа элСмСнтов. Π”Π»ΠΈΠ½Π° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ ΠΈΠ»ΠΈ число элСмСнтов Π² Π½Π΅ΠΉ, являСтся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ ΠΈ измСняСтся, Π² зависимости ΠΎΡ‚ дСйствия ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Рис. 8.8. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ β€” Β«ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²ΠΎΡˆΠ΅Π»β€“ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π»Β»


ΠšΡ€ΡƒΠ³ΠΎΠ²Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ. Π’ ΠΊΡ€ΡƒΠ³ΠΎΠ²ΠΎΠΉ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ, которая ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Ρƒ ΠΆΠ΅ ΡΠ°ΠΌΡƒΡŽ Π±Π°Π·ΠΈΡΠ½ΡƒΡŽ структуру, Ρ‡Ρ‚ΠΎ ΠΈ простая ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ послСднСй записи Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π½Π΅ пустой, ΠΎΠ½ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π° ΠΏΠ΅Ρ€Π²ΡƒΡŽ запись. ΠšΡ€ΡƒΠ³ΠΎΠ²Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° рис. 8.9. Как ΠΌΡ‹ скоро ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, это эффСктивная структура Π΄Π°Π½Π½Ρ‹Ρ… для ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ с Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ.

Рис. 8.9. ΠšΡ€ΡƒΠ³ΠΎΠ²Π°Ρ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ


Π‘Ρ‚Π΅ΠΊ. Π‘Ρ‚Π΅ΠΊ β€” это структура Π΄Π°Π½Π½Ρ‹Ρ… послСдним вошСл β€” ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ Π²Ρ‹ΡˆΠ΅Π» (last-in-first-out β€” LIFO), показанная Π½Π° рис. 8.10. Она Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ создана с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² списка с указатСлями. Π’ΠΎ встроСнных ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π½Ρ‹Ρ… систСмах Π½Π° Π±Π°Π·Π΅ 68HC12, стСк β€” опрСдСлСнная ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΌ Ρ‡Π°ΡΡ‚ΡŒ RAM, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ хранятся ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ содСрТимоС ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ рСгистра. ВСрхняя Ρ‡Π°ΡΡ‚ΡŒ стСка Π² 68HC12 ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ опрСдСляСтся послСднСй ΠΏΠΎΠ·ΠΈΡ†ΠΈΠ΅ΠΉ RAM плюс ΠΎΠ΄ΠΈΠ½. Π£ΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка для 68HC12 содСрТит адрСс послСднСго ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ располоТСния стСка. Когда элСмСнт ΠΏΠΎΠΌΠ΅Ρ‰Π°ΡŽΡ‚ Π² стСк, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Π΅Ρ‚ΡΡ Π½Π° 1 (проводится опСрация Π΄Π΅ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°). Когда элСмСнт извлСкаСтся ΠΈΠ· стСка, ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка увСличиваСтся Π½Π° 1 (опСрация ΠΈΠ½ΠΊΡ€Π΅ΠΌΠ΅Π½Ρ‚Π°). Когда ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ проводится Π½Π° языкС C, ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ стСка являСтся ΠΎΠΏΡ†ΠΈΠ΅ΠΉ компилятора. Если встроСнная контроллСрная систСма содСрТит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ стСк, Π»ΡƒΡ‡ΡˆΠ΅ всСго просто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ свойства, встроСнныС Π² процСссор. Однако, ΠΊΠ°ΠΊ ΠΌΡ‹ скоро ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, Π² ΠžΠ‘Π Π’ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ нСсколько стСков, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΌΡƒ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. Π’ этом случаС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ систСмы Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π±ΠΎΡ‚Ρƒ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… стСков. Если ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ распрСдСлСния памяти, Ρ‚ΠΎ нСсколько стСков ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² динамичСской памяти. ΠœΡ‹ оставим Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ структуры Π΄Π°Π½Π½Ρ‹Ρ… стСка, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π΅ΠΉ динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ распрСдСлСния памяти Π² качСствС вашСй домашнСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ (Π·Π°Π΄Π°Ρ‡Π° 1 для ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ исслСдования). ВмСсто этого, ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π΅ΠΌ структуру стСка с фиксированный Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ массива. Π‘Ρ‚Π΅ΠΊ с фиксированным массивом ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ, ΠΊΠΎΠ³Π΄Π° Ρ€Π°Π·ΠΌΠ΅Ρ€ стСка извСстСн ΠΈ Π½Π΅ΠΈΠ·ΠΌΠ΅Π½Π΅Π½. Как ΠΌΡ‹ скоро ΡƒΠ²ΠΈΠ΄ΠΈΠΌ, стСки с успСхом ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² Π±Π»ΠΎΠΊΠ°Ρ… управлСния Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ.

Рис. 8.10. Π‘Ρ‚Π΅ΠΊ


Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π΄Π°Π½Π½Ρ‹Ρ… стСка, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Ρ‹ Π»ΠΈ ΠΎΠ½ΠΈ с использованиСм ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² динамичСского распрСдСлСния ΠΈΠ»ΠΈ фиксированного массива, ΠΈΠΌΠ΅Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

β€’ initialize_stack: инициализация стСка;

β€’ push: ΠΏΠΎΠΌΠ΅ΡΡ‚ΠΈΡ‚ΡŒ элСмСнт Π² стСк;

β€’ pull: ΠΈΠ·Π²Π»Π΅Ρ‡ΡŒ элСмСнт ΠΈΠ· стСка;

β€’ stack_empty: Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π½Π΅ пуст Π»ΠΈ стСк. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ pull;

β€’ stack_full: Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, Π½Π΅ ΠΏΠΎΠ»ΠΎΠ½ Π»ΠΈ стСк. Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΄ΠΎ использования Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ push;

β€’ print_stack: Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ содСрТимоС стСка.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ стСка ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° рис. 8.11.

Рис. 8.11. ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ со стСком 


Π‘Π»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ стСк с фиксированным массивом.

/********************************************************************/

/* имя Ρ„Π°ΠΉΠ»Π°: stack.с                                               */

/********************************************************************/


/*Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ„Π°ΠΉΠ»Ρ‹*/

#include <stdio.h> /*стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° I/O */

#include <stdlib.h> /*стандартная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° динамичСского распрСдСлСния*/


/*global variables - ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ Π² header file. */

/* Они ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ здСсь, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Ρ‰Π΅Π΅ построСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.*/

/*ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ структуры*/

struct stack_struct {

 int stack_top; /*ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ позиция Π² стСкС*/

 int stack_item[10]; /*элСмСнт, сохранСнный Π² стСкС с фиксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ */

}


typedef struct stack_struct stack; /*массив для распознавания ΠΈΠΌΠ΅Π½ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…*/

typedef stack *stack_ptr; /*ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π° стСк */

                          /*Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ-ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΡ‹*/

void initialize_stack(stack);

void push(stack*, int); /*Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π° ΠΏΠΎ ссылкС*/

int pull(stack *); /* ΠΊΠΎΠ³Π΄Π° содСрТимоС стСка Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ */

int stack_empty(stack);

int stack_full(stack);

void print_stack(stack);


/*ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅*/

int YES=1,NO=0; /*логичСскиС Ρ„Π»Π°Π³ΠΈ */

stack stack1; /*объявлСниС стСка */

char *filename;

FILE *outputfile;


void main(void) {

 int response;

 int stack_item;

 /*ΠΏΠ΅Ρ‡Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π² Ρ„Π°ΠΉΠ»/

 printf("\n\nEnter a filename for output.");

 scanf("%s", filename);

 outputfile = fopen(filename, "a");