Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пояснительная записка1.docx
Скачиваний:
10
Добавлен:
04.05.2019
Размер:
151.95 Кб
Скачать

3 Алгоритм решения задачи

Алгоритм решения Задачи представлен ввиде блок-схем:

Функция добавление элемента:

Ввод

Node* ptr = new Node;

ptr->number = numb;

ptr->next = NULL;

tail = ptr;

Edit1->Text="";

+

-

-

+

-

+

if (head == NULL)

head = ptr;

ptrLast = ptr;

ptr->last = NULL;

ptr->last = ptrLast;

ptrLast->next = ptr;

ptrLast = ptr;

Вывод

Функция поиска элемента.

Ввод

if (head == NULL)

if (key == ptr->number)number)

Label3->Caption="Элемент найден";

if (ptr->next == NULL)

+

-

-

-

Label3->Caption="Элемент не найден";

ptr = ptr->next;

}

Вывод

Ввод

Вывод

Функция удаления элемента из очереди:

if (head == NULL)

+

+

if (head->next == NULL)

Label2->Caption = "Очередь пуста ";

head = NULL;

tail = NULL;

delete tail;

ptrDelete = head;

head = ptrDelete->next;

head->last = NULL;

delete ptrDelete;

Ф

Ввод

ункция просмотра списка очереди:

if (head == NULL)

+

-

+

-

Label2->Caption = "Очередь пуста";

ptr = tail;

Label2->Caption = "";

Label2->Caption = Label2->Caption+ptr->number+" ";

if (ptr->last == 0)

ptr = ptr->last;

Вывод

4 ОПИСАНИЕ ПРОГРАММЫ

4.1 Функциональное назначение программы

Данная программа предназначена для реализации очереди, поиска и удаления элементов из этой очереди.

4.2 Глобальные переменные и константы

  • Form1 – главное окно программы;

  • Edit - однострочное текстовое поле, служащее для ввода данных.

  • Button - это простая командная кнопка.

4.3 Внутренняя структура программы

Структурно программа состоит из пяти основных частей:

  1. Добавление элемента в список

  2. Поиск элемента этого списка

  3. Просмотр списка элементов

  4. Удаление последнего элемента

Главная форма программы имеет следующий вид:

Ввод данных осуществляется в левом верхнем углу основной формы:

Вывод списка элементов который имеет вид:

Осуществляется в четыре этапа:

  1. Ввод числа и добавление его в очередь

int numb = Edit1->Text.ToInt();

Node* ptr = new Node;

ptr->number = numb;

ptr->next = NULL;

tail = ptr;

Edit1->Text="";

if (head == NULL){

head = ptr;

ptrLast = ptr;

ptr->last = NULL;

}

else{

ptr->last = ptrLast;

ptrLast->next = ptr;

ptrLast = ptr;

  1. Поиск элемента (ищет элемент в текущей очереди)

Node* ptr = NULL;

int key = Edit2->Text.ToInt();;

if (head == NULL)

{

Label2->Caption = "Очередь пуста";

}

ptr = head;

while (1)

{

if (key == ptr->number)

{

Label3->Caption="Элемент найден";

break;

}

if (ptr->next == NULL)

{

Label3->Caption="Элемент не найден";

break;

}

ptr = ptr->next;

}

  1. Удаление элемента из списка очереди

Node* ptrDelete = NULL;

if (head == NULL)

{

Label2->Caption = "Очередь пуста";

}

else{

if (head->next == NULL)

{

head = NULL;

tail = NULL;

delete tail;

}

else

{

ptrDelete = head;

head = ptrDelete->next;

head->last = NULL;

delete ptrDelete;

}

}

  1. Просмотр очереди:

{

Node* ptr = NULL;

if (head == NULL)

{

Label2->Caption = "Очередь пуста";

}

else{

ptr = tail;

Label2->Caption = "";

while (1)

{

Label2->Caption = Label2->Caption+ptr->number+" ";

//cout<<ptr->number<<" ";

if (ptr->last == 0)

break;

ptr = ptr->last;

}

//cout<<"\n\n";

}