Встраиваемые системы. Проектирование приложений на микроконтроллерах семейства 68HC12/HCS12 с применением языка С
Шрифт:
car_temp_ptr current,backup,temp; /*текущий указатель списка */
char delete_make[10];
/*определить поле make для удаления */
printf("\n\nDelete 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("\n\nSearch for car in stock.");
printf("\nEnter make of car to search for in list. ");
scanf("%s", search_make);
/*движение по списку */
for(temp_ptr-search_list; temp_ptr!=NULL; temp_ptr=temp_ptr->next) {
if (strcmp(temp_ptr->make, search_make) == 0) {
printf("\n\nyear: %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);
/*считать показания одометра*/
}
}
}
/********************************************************************/
/********************************************************************/
После выполнения программы на дисплее появится следующее сообщение.
year: 1981
make: Chevy
model: Camaro
VIN: 12Z367
mileage: 37456
year: 1974
make: Ford
model: Mustang11
VIN: 3L265ST
mileage: 122456
year: 1997
make: Saturn
model: SL1
VIN: 234TH67
mileage: 140512
year: 1981
make: Chevy
model: Camaro
VIN: 12Z367
mileage: 37456
year: 1974
make:Ford
model: Mustang11
VIN: 3L265ST
mileage: 122456
year: 2002
make: Hummer
model: H2
VIN: 73H2L7
mileage: 13
year: 1997
make: Saturn
model: SL1
VIN: 234TH67
mileage: 140512
Удалены
следующие автомобили из списка для продаж.
Введено поле make для удаления из списка – Hummer
year: 1981
make: Chevy
model: Camaro
VIN: 12Z367
mileage: 37456
year: 1974
make: Ford
model: Mustang11
VIN: 3L265ST
mileage: 122456
year: 1997
make: Saturn
model: SL1
VIN: 234TH67
mileage: 140512
Найден автомобиль в списке продаж.
Введенное поле make для поиска – Saturn
year: 1997
make: Saturn
model: SL1
VIN: 234TH67
mileage: 140512
Этот очень простой пример был придуман, чтобы показать основные действия, связанные обработкой списка с указателями. Мы намеренно выбрали скелетную программу, чтобы концентрироваться на работе списков с указателями. Если бы мы разрабатывали фактическую программу описи, основанную на списках с указателями, мы разработали бы дружественное меню, которое позволило бы вызывать функции в любом порядке. Кроме того, мы сформировали бы исходный список загрузив данные из файла. Мы обеспечили бы также возможность сохранять данные списка в файле.
Поделиться с друзьями: