Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С полностью

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

int stack_full(stack a_stack) {

 if (a_stack.stack_top == 10) /*проверить не заполнен ли стек */

 { /*произвольный выбор предела стека */

  fprintf(outputfile, "\n\nStack Full!");

  return YES;

 } else {

  fprintf(outputfile, "\n\nStack is not full.");

  return NO;

 }

}


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

/*print_stack: печать текущего элемента (на вершине стека)          */

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

void print_stack(stack a_stack) {

 int i;

 if (!(stack_empty(a_stack)))/*проверить не пуст ли стек перед печатью*/

 { /*перейти к основанию стека перед печатью */

  for(i = a_stack.stack_top; i>=0; i=i-1)

fprintf(outputfile, "\nStack item: %d", a_stack.stack_item[i]);

 } else fprintf(outputfile,"\nCannot print - stack is empty!");

}


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

/*push(stack *, int): запись элемента в стек                        */

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

void push(stack *a_stack, int item) {

 fprintf(outputfile, "\n\nBefore push - stack pointer: %d",

  a_stack->stack_top);

 if (!(stack_full(*a_stack))) /*проверка заполнения стека*/

                              /* перед записью элемента*/

 {

  a_stack->stack_item[a_stack->stack_top] = item;

  fprintf(outputfile, "\nstack item after push: %d",

   a_stack->stack_item[a_stack->stack_top]);

 a_stack->stack_top = a_stack->stack_top + 1;

 fprintf(outputfile, "\nstacktop after push: %d",

  a_stack->stack_top);

 } else fprintf(outputfile, "\nCannot push - stack is full!");

}


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

/*pull(stack *): извлечение элемента из стека                       */

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

int pull(stack *a_stack) {

 int item;

 fprintf(outputfile,"\n\nBefore pull - stack pointer: %d",

  a_stack->stack_top);

 if (!(stack_empty(*a_stack))) /*проверка не пуст ли стек */

                               /*перед извлечением элемента*/

 {

  item = a_stack->stack_item[a_stack->stack_top-1];

  fprintf(outputfile, "\nstack item pulled: %d", item);

  a_stack->stack_top = a_stack->stack_top - 1;

  fprintf(outputfile,"\nstacktop after pull: %d",

  a_stack->stack_top); return item;

 } else fprintf(outputfile, "\nCannot pull - stack is empty!");

}

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

Мы показали работу этого примера на рис. 8.12. После выполнения этой программы будет выдан следующий код:

Рис. 8.12. Запись в стек и извлечение из стека


Stack top: 0

Stack Empty!


Stack is not full.

Stack top: 0

Stack Empty!


Перейти на страницу:

Похожие книги

C# 4.0: полное руководство
C# 4.0: полное руководство

В этом полном руководстве по C# 4.0 - языку программирования, разработанному специально для среды .NET, - детально рассмотрены все основные средства языка: типы данных, операторы, управляющие операторы, классы, интерфейсы, методы, делегаты, индексаторы, события, указатели, обобщения, коллекции, основные библиотеки классов, средства многопоточного программирования и директивы препроцессора. Подробно описаны новые возможности C#, в том числе PLINQ, библиотека TPL, динамический тип данных, а также именованные и необязательные аргументы. Это справочное пособие снабжено массой полезных советов авторитетного автора и сотнями примеров программ с комментариями, благодаря которым они становятся понятными любому читателю независимо от уровня его подготовки. Книга рассчитана на широкий круг читателей, интересующихся программированием на C#.Введите сюда краткую аннотацию

Герберт Шилдт

Программирование, программы, базы данных
Программирование. Принципы и практика использования C++ Исправленное издание
Программирование. Принципы и практика использования C++ Исправленное издание

Специальное издание самой читаемой и содержащей наиболее достоверные сведения книги по C++. Книга написана Бьярне Страуструпом — автором языка программирования C++ — и является каноническим изложением возможностей этого языка. Помимо подробного описания собственно языка, на страницах книги вы найдете доказавшие свою эффективность подходы к решению разнообразных задач проектирования и программирования. Многочисленные примеры демонстрируют как хороший стиль программирования на С-совместимом ядре C++, так и современный -ориентированный подход к созданию программных продуктов. Третье издание бестселлера было существенно переработано автором. Результатом этой переработки стала большая доступность книги для новичков. В то же время, текст обогатился сведениями и методиками программирования, которые могут оказаться полезными даже для многоопытных специалистов по C++. Не обойдены вниманием и нововведения языка: стандартная библиотека шаблонов (STL), пространства имен (namespaces), механизм идентификации типов во время выполнения (RTTI), явные приведения типов (cast-операторы) и другие. Настоящее специальное издание отличается от третьего добавлением двух новых приложений (посвященных локализации и безопасной обработке исключений средствами стандартной библиотеки), довольно многочисленными уточнениями в остальном тексте, а также исправлением множества опечаток. Книга адресована программистам, использующим в своей повседневной работе C++. Она также будет полезна преподавателям, студентам и всем, кто хочет ознакомиться с описанием языка «из первых рук».

Бьёрн Страуструп , Ирина Сергеевна Козлова , Бьерн Страуструп , Валерий Федорович Альмухаметов

Программирование, программы, базы данных / Базы данных / Программирование / Учебная и научная литература / Образование и наука / Книги по IT