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

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

/*включенные файлы*/

#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");

 initialize_stack(stack1);

 response = stack_empty(stack1); /*вызов по значению */

 response = stack_full(stack1);

 print_stack(stack1);

 push(stack1, 11); /*вызов по ссылке */

 push(stack1, 12);

 push(stack1, 13);

 push{stack1, 14);

 print_stack(stack1);

 pull(stack1);

 pull(stack1);

 pull(stack1);

 pull(stack1);

 pull(stack1);

 fclose(outputfile); /*закрыть выходной файл */

}

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

/*initialize_stack: установить указатель вершины стека в 0          */

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

void initialize_stack(stack a_stack) {

 a_stack.stack_top=0; /*установить указатель стека в 0*/

}

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

/*stack_empty: возвращает ДА если стек пуст, и НЕТ в противном случае */

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

int stack_empty(stack a_stack) {

 fprintf(outputfile, "\n\nStack top: %d", a_stack.stack_top);

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

 {

  fprintf(outputfile, "\nStack Empty!");

  return YES;

 } else {

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

  return NO;

 }

}

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

Перейти на страницу:
Нет соединения с сервером, попробуйте зайти чуть позже