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

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

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

Шрифт:

-
+

Интервал:

-
+

Закладка:

Сделать
1 ... 122 123 124 125 126 127 128 129 130 ... 150
Перейти на страницу:

/*помещают в файл заголовка (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. ");

1 ... 122 123 124 125 126 127 128 129 130 ... 150
Перейти на страницу:
На этой странице вы можете бесплатно читать книгу Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С - Стивен Барретт.
Комментарии