Файл: Практическая работа 2 Динамические структуры данных Списки.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 26.10.2023
Просмотров: 179
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
void del (QUEUE **pbeg){QUEUE *old_item = *pbeg;if(*pbeg){*pbeg =(*pbeg)->next;free(old_item);}}Пример. Пусть из очереди, состоящей из трех элементов (‘a’,’b’,’c’), необходимо удалить элемент ‘b’. В этом случае необходимо удалить элемент из середины очереди.Функция удаления элемента из середины очереди:
На рис. 9 показано происходящее после каждого шага изменения.Рис. 9 – Удаление элемента из середины очереди
if(*top){ item = (*top)->info;*top =(*top)->next;free(old_item);return item;}return 1;}3.2 Пример программы с использованием очередиПрограмма реализует мини-планировщик событий:#include "stdafx.h"#include "string.h"#include "stdlib.h"#include "stdio.h"#include "ctype.h"#define QUEUE struct ListQUEUE{char *info;int num;QUEUE *next;};void insert(QUEUE **pbeg, char *item, int number);void del(QUEUE **pbeg);void enter(int *spos, QUEUE **q);void review(QUEUE **q);int _tmain(int argc, _TCHAR* argv[]){char s[80];int spos=0;QUEUE *q=0;for(;;){printf("Enter, List, Remove, Quit: ");gets(s);*s = toupper(*s);switch(*s){case 'E':enter(&spos,&q);break;case 'L':review(&q);break;case 'R':del(&q);break;case 'Q':exit(0);}}return 0;}void insert(QUEUE **pbeg, char *item, int number){QUEUE *current = *pbeg;QUEUE *previous = 0;QUEUE *new_node;while (current){previous = current;current = current -> next;}new_node = new QUEUE;strcpy(new_node->info, item);new_node->num = number;if (previous){new_node->next = 0;previous->next = new_node;}else{*pbeg = new_node;(*pbeg)->next = 0;}}void del (QUEUE **pbeg){QUEUE *old_item = *pbeg;if(*pbeg){printf("%d: %s\n",(*pbeg)->num,(*pbeg)->info);*pbeg =(*pbeg)->next;free(old_item);}}void enter(int *spos, QUEUE **q){char *s;QUEUE *q1=*q;s = new char;do{printf("Enter appointment %d: ", spos+1);gets(s);if(*s==0)break;spos++;insert(&q1,s,spos);*q = q1;}while(*s);}void review(QUEUE **q){QUEUE *temp = *q;while(temp){printf("%d. %s\n", temp->num, temp->info);temp = temp->next;}}
Программа должна обеспечивать:
Программа должна обеспечивать диалог с помощью меню.
Вариант 5
Каждая заявка включает:
| void del_mid(QUEUE **pbeg) { QUEUE *current = *pbeg; QUEUE *previous = 0; while(current->info!=’b’) { previous = current; current = current->next; } previous->next = current->next; free(current); } | //*pbeg – указатель на первый элемент очереди //текущий элемент очереди //предыдущий элемент очереди //пока поле info текущего элемента не содержит символ ‘b’ //указатель previous указывает на тот же элемент, что и указатель current //перемещение указателя current на следующий по отношению к текущиму элемент //следующим после предыдущего элемента становится следующий по отношению к текущему элемент //уничтожаем элемент current |
-
Пример реализации программы
if(*top){ item = (*top)->info;*top =(*top)->next;free(old_item);return item;}return 1;}3.2 Пример программы с использованием очередиПрограмма реализует мини-планировщик событий:#include "stdafx.h"#include "string.h"#include "stdlib.h"#include "stdio.h"#include "ctype.h"#define QUEUE struct ListQUEUE{char *info;int num;QUEUE *next;};void insert(QUEUE **pbeg, char *item, int number);void del(QUEUE **pbeg);void enter(int *spos, QUEUE **q);void review(QUEUE **q);int _tmain(int argc, _TCHAR* argv[]){char s[80];int spos=0;QUEUE *q=0;for(;;){printf("Enter, List, Remove, Quit: ");gets(s);*s = toupper(*s);switch(*s){case 'E':enter(&spos,&q);break;case 'L':review(&q);break;case 'R':del(&q);break;case 'Q':exit(0);}}return 0;}void insert(QUEUE **pbeg, char *item, int number){QUEUE *current = *pbeg;QUEUE *previous = 0;QUEUE *new_node;while (current){previous = current;current = current -> next;}new_node = new QUEUE;strcpy(new_node->info, item);new_node->num = number;if (previous){new_node->next = 0;previous->next = new_node;}else{*pbeg = new_node;(*pbeg)->next = 0;}}void del (QUEUE **pbeg){QUEUE *old_item = *pbeg;if(*pbeg){printf("%d: %s\n",(*pbeg)->num,(*pbeg)->info);*pbeg =(*pbeg)->next;free(old_item);}}void enter(int *spos, QUEUE **q){char *s;QUEUE *q1=*q;s = new char;do{printf("Enter appointment %d: ", spos+1);gets(s);if(*s==0)break;spos++;insert(&q1,s,spos);*q = q1;}while(*s);}void review(QUEUE **q){QUEUE *temp = *q;while(temp){printf("%d. %s\n", temp->num, temp->info);temp = temp->next;}}
-
Варианты заданий к практической работе №2
-
Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
-
пункт назначения; -
номер рейса; -
фамилию и инициалы пассажира; -
желаемую дату вылета.
-
Программа должна обеспечивать:
-
хранение всех заявок в виде односвязного списка (очередь); -
добавление заявок в список; -
удаление заявки пассажира, фамилия которого введена с клавиатуры; -
вывод всех заявок; -
вывод заявок по заданному пункту назначения.
-
Программа должна обеспечивать диалог с помощью меню.
-
Составить программу, которая содержит текущую информацию об успеваемости студентов.
-
фамилия и инициалы; -
номер группы; -
успеваемость (массив из пяти элементов).
-
Программа должна обеспечивать:
-
хранение сведений обо всех студентах в виде односвязного списка (очередь); -
добавление данных о новых студентах; -
удаление данных о студенте, фамилия которого введена с клавиатуры; -
вывод сведений обо всех студентах; -
по запросу выводятся сведения о студентах, которые имеют оценки 4 и 5.
-
Программа должна обеспечивать диалог с помощью меню.
-
Составить программу, которая содержит текущую информацию об успеваемости студентов.
-
фамилия и инициалы; -
номер группы; -
успеваемость (массив из пяти элементов).
-
Программа должна обеспечивать:
-
хранение сведений обо всех студентах в виде односвязного списка (очередь); -
добавление данных о новых студентах; -
удаление данных о студенте, фамилия которого введена с клавиатуры; -
вывод сведений обо всех студентах; -
по запросу выводятся сведения о студентах, которые имеют хотя бы одну оценку 2.
-
Программа должна обеспечивать диалог с помощью меню.
-
фамилия и инициалы; -
номер группы; -
успеваемость (массив из пяти элементов).
Программа должна обеспечивать:
-
хранение сведений обо всех студентах в виде односвязного списка (очередь); -
добавление данных о новых студентах; -
удаление данных о студенте, фамилия которого введена с клавиатуры; -
вывод сведений обо всех студентах; -
по запросу выводятся сведения о студентах, средний балл которых больше 4.0.
Программа должна обеспечивать диалог с помощью меню.
Вариант 5
-
Составить программу, которая содержит текущую информацию о заявках на авиабилеты.
Каждая заявка включает:
-
пункт назначения; -
номер рейса; -
фамилию пассажира; -
желаемую дату вылета.
-
Программа должна обеспечивать:
-
хранение всех заявок в виде односвязного списка (очередь); -
добавление заявок в список; -
удаление заявки пассажира, фамилия которого введена с клавиатуры; -
вывод всех заявок; -
вывод заявок по заданной дате вылета.
-
Программа должна обеспечивать диалог с помощью меню.
-
Составить программу, которая содержит текущую информацию о работниках организации.
-
фамилия и инициалы работника; -
название занимаемой должности; -
год поступления на работу;
-
Программа должна обеспечивать:
-
хранение сведений обо всех работниках в виде односвязного списка (очередь); -
добавление новых работников в список; -
удаление работников из списка, фамилия которого введена с клавиатуры; -
вывод сведений обо всех работниках; -
по запросу выводятся сведения о работниках, чей стаж работы в организации превышает значение, введенное с клавиатуры.
-
Программа должна обеспечивать диалог с помощью меню.
-
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования.
-
пункт назначения; -
номер поезда; -
время отправления.
-
Программа должна обеспечивать:
-
хранение данных в информационной системе в виде односвязного списка (очередь); -
добавление данных о поездах в информационную систему; -
удаление данных о поезде по введенному номеру поезда; -
вывод информации обо всех поездах; -
вывод информации о поездах, отправляющихся после введенного с клавиатуры времени.
-
Программа должна обеспечивать диалог с помощью меню.
-
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования.
-
пункт назначения; -
номер поезда; -
время отправления.
-
Программа должна обеспечивать:
-
хранение данных в информационной системе в виде односвязного списка (очередь); -
добавление данных о поездах в информационную систему; -
удаление данных о поезде по введенному номеру поезда; -
вывод информации обо всех поездах; -
вывод информации обо всех поездах, следующих до заданного пункта назначения.
-
Программа должна обеспечивать диалог с помощью меню.
-
Автоматизированная информационная система на железнодорожном вокзале содержит сведения об отправлении поездов дальнего следования.
-
пункт назначения; -
номер поезда; -
время отправления.
-
Программа должна обеспечивать:
-
хранение данных в информационной системе в виде односвязного списка (очередь); -
добавление данных о поездах в информационную систему; -
удаление данных о поезде по введенному номеру поезда; -
вывод информации обо всех поездах; -
вывод информации о поезде, номер которого введен с клавиатуры;
-
Программа должна обеспечивать диалог с помощью меню.
-
Составить программу, которая содержит информацию о наличии автобусов в автобусном парке.
-
номер автобуса; -
фамилию и инициалы водителя; -
номер маршрута.
-
Программа должна обеспечивать:
-
хранение данных обо всех автобусах в парке в виде односвязного списка (очередь); -
добавление данных об автобусах в список при въезде каждого автобуса в парк; -
удаление данных об автобусе из списка при выезде из парка, номер которого введен с клавиатуры; -
вывод информации обо всех автобусах, находящихся в парке; -
по запросу выводится информация об автобусе по введенной фамилии водителя.
-
Программа должна обеспечивать диалог с помощью меню.
-
Составить программу, которая содержит информацию о наличии автобусов в автобусном парке.
-
номер автобуса; -
фамилию и инициалы водителя; -
номер маршрута.
-
Программа должна обеспечивать:
-
хранение данных обо всех автобусах в парке в виде односвязного списка (очередь); -
добавление данных об автобусах в список при въезде каждого автобуса в парк; -
удаление данных об автобусе из списка при выезде из парка, фамилия водителя которого введена с клавиатуры; -
вывод информации обо всех автобусах, находящихся в парке; -
по запросу выводится информация обо всех автобусах, работающих на маршруте, номер которого введен с клавиатуры.
-
Программа должна обеспечивать диалог с помощью меню.