Читаем Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 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#.Введите сюда краткую аннотацию

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

Программирование, программы, базы данных
Разработка приложений в среде Linux. Второе издание
Разработка приложений в среде Linux. Второе издание

Книга известных профессионалов в области разработки коммерческих приложений в Linux представляет СЃРѕР±РѕР№ отличный справочник для широкого круга программистов в Linux, а также тех разработчиков на языке С, которые перешли в среду Linux из РґСЂСѓРіРёС… операционных систем. РџРѕРґСЂРѕР±но рассматриваются концепции, лежащие в основе процесса создания системных приложений, а также разнообразные доступные инструменты и библиотеки. Среди рассматриваемых в книге вопросов можно выделить анализ особенностей применения лицензий GNU, использование СЃРІРѕР±одно распространяемых компиляторов и библиотек, системное программирование для Linux, а также написание и отладка собственных переносимых библиотек. Р

Майкл К. Джонсон , Эрик В. Троан

Программирование, программы, базы данных