Чтение онлайн

ЖАНРЫ

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

Этот очень простой пример был придуман, чтобы показать основные действия, связанные обработкой списка с указателями. Мы намеренно выбрали скелетную программу, чтобы концентрироваться на работе списков с указателями. Если бы мы разрабатывали фактическую программу описи, основанную на списках с указателями, мы разработали бы дружественное меню, которое позволило бы вызывать функции в любом порядке. Кроме того, мы сформировали бы исходный список загрузив данные из файла. Мы обеспечили бы также возможность сохранять данные списка в файле.

Поделиться с друзьями: