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

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

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

/*помещают в файл заголовка (header file). Они приведены здесь, */

/* чтобы иллюстрировать последовательность построения программы. */

/*определение структуры "автомобиль"*/

struct car {

 int year; /* год производства */

 char make[10]; /*BWM, Hummer, Saturn */

 char model[12]; /*купе, обратимый, SUV, пикап */

 char VTN[10]; /*комбинация цифр, букв */

 float mileage; /*показания спидометра: от 0 до 500,000+*/

 struct car *next; /*указатель на следующий автомобиль в списке */

};

/*определение указателя на автомобиль */

typedef struct car ELEMENT;

typedef ELEMENT *car_temp_ptr;

/*функции прототипов*/

void initialize_link_list(void);

void print_link_list(car_temp_ptr);

void insert_link_list(car_temp_ptr);

void delete_link_list(car_temp_ptr);

void search_link_list(car_temp_ptr);

/*переменные*/

/ " Создают списки, чтобы следить за состоянием автомобильного сервиса*/

car_temp_ptr in_stock_list; /* автомобили в продаже */

car_temp_ptr repair_list; /* автомобили в ремонт - не подлежат продаже*/

car_temp_ptr paint_shop_list;/*автомобили в покраске - не подлежат продаже*/

car_temp_ptr sold_list; /*проданные автомобили -- не подлежат продаже*/

car_temp_ptr new_car_entry; /*новый автомобиль для введения в список*/

int TRUE=1, FALSE=0; /*логические флаги */

void main(void) {

 /*заполняет пустой список переменными NULL */

 in_stock_list = NULL; /* автомобили в продаже */

 repair_list = NULL; /* автомобили в ремонте - не подлежат продаже */

 paint_shop_list = NULL; /* автомобили в покраске - не подлежат продаже*/

 sold_list = NULL; /*проданные автомобили -- не подлежат продаже * /

 new_car_entry = NULL;

 initialize_link_list(); /*составление списка для продажи */

 print_link_list(in_stock_list); /*print the list */

 insert_link_list(in_stock_list); /*вставить новый автомобиль в список*/

 print_link_list(in_stock_list); /*распечатать список */

 delete_link_list(in_stock_list); /*удалить автомобиль из списка */

 print_link_list(in_stock_list); /*распечатать список */

 search_link_list(in_stock_list); /*поиск определенного пункта в списке */

}

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

/*void initialize_link_list (car_temp_ptr): инициализирует автомобиль */

/* для списка продаж используя список.Отметим, что этот список      */

/* с указателями был объявлен как глобальная переменная.            */

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

void initialize_link_list(void) {

 car_temp_ptr new_car_entry1, new_car_entry2;

 /*создает вход в список автомобилей */

 new_car_entry = (car_temp_ptr)malloc(sizeof(ELEMENT));

 /*инициализирует новые поля для ввода автомобиля в список*/

 new_car_entry->year = 1981; /*год выпуска */

 strcpy(new_car_entry->make, "Chevy"); /*BWM, Hummer, Saturn */

 strcpy(new_car_entry->model, "Camaro"); /*купе, обратимый, SUV, пикап*/

 strcpy(new_car_entry->VIN, "12Z3 67"); /*комбинация цифр и букв */

 new_car_entry->mileage = 37456; /*показания одометра: от 0 до 500 000+*/

 new_car_entry->next = NULL; /*указатель на следующий автомобиль в списке*/

 in_stock_list = new_car_entry;

 new_car_entry1 = (car_temp_ptr) malloc(sizeof(ELEMENT));

 /*инициализирует новые поля для ввода автомобиля в список*/

 new_car_entry1->year = 1974; /*год выпуска*/

 strcpy(new_car_entry1->make,"Ford"); /*BWM, Hummer, Saturn */

 strcpy(new_car_entry1->model,"Mustang11")/*купе, обратимый, SUV, пикап*/

 strcpy(new_car_entry1->VIN, "3L265ST" ) ; /*комбинация цифр и букв */

 new_car_entry1->mileage = 122456; /*показания одометра: от 0 до 500 000+ */

 new_car_entry1->next = NULL; /*указатель на следующий автомобиль в списке */

 new_car_entry2 = (car_temp_ptr)malloc(sizeof(ELEMENT));

 /*инициализирует новые поля для ввода автомобиля в список*/

 new_car_entry2->year = 1997; /*год выпуска*/

 strcpy(new_car_entry2->make, "Saturn"); /*BWM, Hummer, Saturn */

 strcpy(new_car_entry2->model,"SL1"); /*купе, обратимый, SUV, пикап */

 strcpy(new_car_entry2->VIN, "234TH67"); /*комбинация цифр и букв */

 new_car_entry2->mileage = 140512;/*показания одометра: от 0 до 500 000+ */

 new_car_entry2->next = NULL; /*указатель на следующий автомобиль в списке*/

 new_car_entry1->next = new_car_entry2;

}

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

/*print_link_list: печатает поля выделенного списка с указателями   */

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

void print_link_list(car_temp_ptr print_list) {

 car_temp_ptr temp_ptr; /*объявляет текущий указатель */

 printf("nCars available in stock for sale:");

 /*продвижение по списку */

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

  printf("nnyear: %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); /*показания одометра*/

 }

}

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

/*insert_link_list (in_stock_list) - вставляют новый автомобиль в   */

/* отмеченный список в алфавитном порядке                           */

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

void insert_link_list(car_temp_ptr in_stock_list) {

 car_temp_ptr new_car_entry, list, ptr;

 int place_found;

 list = in_stock_list;

 /*создает ввод автомобиля */

 new_car_entry = (car_temp_ptr) malloc(sizeof(ELEMENT));

 /*инициализирует новые поля для ввода автомобиля в список */

 new_car_entry->year = 2002; /*год выпуска */

 strcpy(new_car_entry->make,"Hummer"); /*BWM, Hummer, Saturn*/

 strcpy(new_car_entry->model, "H2"); /*купе, обратимый, SUV, пикап */

 strcpy(new_car_entry->VTIM, "73H2L7");/*комбинация цифр и букв*/

 new_car_entry->mileage = 13; /*показания одометра: от 0 до 500 000+ */

 new_car_entry->next = NULL; /*указатель на следующий автомобиль в списке */

 if (list==NULL) { /*вставка в пустой список */

  list=new_car_entry;

 } else {

  /* вставка в первый элемент списка */

  if (strcmp(new_car_entry->make, list->make) < 1) {

   new_car_entry->next=list;

   list = new_car_entry;

  } else /*вставка в непустой список */

  {

   ptr = list; /*определение позиции вставки */

   place_found = FALSE;

   while((ptr->next != NULL) && (!place_found)) {

    if (strcmp (new_car_entry->make, ptr->next->make) > = 1) /*сравнение */

    {

     ptr=ptr->next; /*продвижение по списку */

    } else /*вставка после указателя */

    {

     place_found = TRUE;

    }

   }/*конец цикла while*/

   /*переадресует указатель, чтобы */

   /*закончить ввод в список */

   new_car_entry->next = ptr->next;

   ptr->next - new_car_entry;

  }/*конец else*/

 }/*конец else*/

}/*конец insert_link_list*/

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

/*delete_link_list (car_temp_ptr): */удаление отмеченных элементов */

/*из списка                                                         */

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

void delete_link_list(car_temp_ptr in_stock_list) {

 car_temp_ptr current,backup,temp; /*текущий указатель списка */

 char delete_make[10];

 /*определить поле make для удаления */

 printf("nnDelete car from for sale list.");

 printf("nEnter make of car for deletion from list.");

 scanf("%s", delete_make);

 /*инициировать указатели для поиска */

 current = in_stock_list;

 backup=NULL;

 /*поиск записи, содержащих заданное значение make */

 while (strcmp(current->make, delete_make) !=0) {

  backup = current;

  current = current->next;

 }

 /*Был удален автомобиль из первого элемента? */

 if (backup == NULL){ /*удалить автомобиль из первого элемента */

  in_stock_list = in_stock_list->next;

 } else { /*удалить элемент из списка */

  backup->next = current -> next;

 }

 free(current); /*перераспределить динамическую память*/

}

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

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

/*void search_link_list (car_temp_ptr) - найти запись с определенным */

/* значением поля make. Распечатать автомобили этого изготовителя.  */

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

void search_link_list(car_temp_ptr search_list) {

 char search_make[10];

 car_temp_ptr temp_ptr; /*объявить текущий указатель */

                        /*определить изготовителя для поиска */

 printf("nnSearch for car in stock.");

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

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

Откройте для себя мир чтения на siteknig.com - месте, где каждая книга оживает прямо в браузере. Здесь вас уже ждёт произведение Стивен Барретт - Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С, относящееся к жанру Программирование. Никаких регистраций, никаких преград - только вы и история, доступная в полном формате. Наш литературный портал создан для тех, кто любит комфорт: хотите читать с телефона - пожалуйста; предпочитаете ноутбук - идеально! Все книги открываются моментально и представлены полностью, без сокращений и скрытых страниц. Каталог жанров поможет вам быстро найти что-то по настроению: увлекательный роман, динамичное фэнтези, глубокую классику или лёгкое чтение перед сном. Мы ежедневно расширяем библиотеку, добавляя новые произведения, чтобы вам всегда было что открыть "на потом". Сегодня на siteknig.com доступно более 200000 книг - и каждая готова стать вашей новой любимой. Просто выбирайте, открывайте и наслаждайтесь чтением там, где вам удобно.

Комментарии (0)