Лабораторна робота № 4 (4 год.).

Звіт

Про виконання лабораторної роботи №4

з дисципліни “Алгоритми та структури даних”

 

 

Перевірив: Ст. викладач Кафедри ПЗАС Михайленко Н. С. Виконав: Студент 3-го курсу Групи ПЗС-1644 Гребенюк І. А.

 

 

Черкаси 2016


Лабораторна робота № 4 (4 год.).

 

Тема роботи: вивчення лінійних списків.

Мета роботи: набути практичні навички створення та збереження лінійних списків. Обробка лінійних списків.

Постановка задачі: Створити найпростіше меню для виклику процедур:

• створення списку;

• виведення всього списку;

• виклику заданої процедури.

Створити список заданої структури. Заповнити його інформаційну частину випадковими числами. Створити процедури для обробки списку відповідно до завдання.

Методичні вказівки до роботи:

1) При створенні списку врахувати задану кількість елементів і їх структуру.

2) забезпечити заповнення списку випадковими числами відповідно до завдання.

3) Процедурам в якості параметру передавати інформацію відповідно до типу списку та призначення процедури (адреса початку списку та ін.)

4) Завдання відповідно до варіанту вибрати з Таблиці 1.

Зміст звіту:

1) Тема і мета роботи.

2) Індивідуальне завдання.

3) Текст програми на С++.

4) Результати роботи програми.

5) Інформація про виконавця завдання.

6) Висновок до роботи.

Тип Кількість елементів Поля Призначення процедури
Стек Int+int Видалити елемент

 

Теоретичні відомості

 

LIFO (акронім Last In, First Out, «останнім прийшов - першим пішов») - спосіб організації і маніпулювання даними щодо часу і пріоритетів. У структурованому лінійному списку, організованому за принципом LIFO, елементи можуть додаватися і вибиратися тільки з одного кінця, званого «вершиною списку». Структура LIFO може бути проілюстрована на прикладі стопки тарілок: щоб взяти другу зверху, потрібно зняти верхню, а щоб зняти останню, потрібно зняти всі лежать вище.

Принцип LIFO застосовується в тих випадках, коли останні дані, додані в структуру, повинні бути першими видалені або оброблені.

FIFO (акронім First In, First Out - «першим прийшов - першим пішов») - спосіб організації і маніпулювання даними щодо часу і пріоритетів. Цей вислів описує принцип технічної обробки черги або обслуговування конфліктних вимог шляхом упорядкування процесу за принципом: «першим прийшов - першим обслужений» (ПППО). Той, хто приходить першим, той і обслуговується першим, що прийшов наступним чекає, поки обслуговування першим не буде закінчено, і так далі.


Лістинг програми

#include <iostream>

#include <stdlib.h>

#include <time.h>

#include <iomanip>

 

using namespace std;

 

struct sp{

int p1, p2;

sp *pnt;

};

sp *pt, *ptb;

void stvor(int n);

void vived(sp **firstPointer);

void delOb(sp **firstPointer);

void Info();

 

int main()

{

int key(0);

while(1)

{

cout<<setfill('=')<<setw(144);

cout<<"\n1. Create stack\t\t2. Print to monitor\n3. Delete element\t4. Info developer and exit\n";

cout<<"Please input key = "; cin>>key;

cout<<setfill('_')<<setw(81);

cout<<'\n';

switch(key)

{

case 1: stvor(11); break;

case 2: vived(&ptb); break;

case 3: delOb(&ptb); break;

case 4: Info();break;

default: cout<<"Error!\n";

}

}

return 0;

}

void stvor(int n)

{

ptb = new sp;

pt = ptb;

for(int i=1;i<n;i++)

{

pt->p1 = rand()%100-50;

pt->p2 = rand()%100-50;

pt->pnt = new sp;

pt = pt->pnt;

}

 

pt->p1 = rand()%100-50;

pt->p2 = rand()%100-50;

pt->pnt = NULL;

cout<<"Stack create!\n";

}

 

void vived(sp **firstPointer)

{

pt = *firstPointer;

int i(0);

if(pt){

cout<<"\n###\tatribut[1]\tatribut[2]";

cout<<"\n___\t__________\t__________\n";

while(pt)

{

i++;

cout<<i<<'\t'<<pt->p1<<"\t\t"<<pt->p2<<'\n';

pt = pt->pnt;

}

}

else cout<<"Stack not create!\n";

}

void delOb(sp **firstPointer)

{

pt = *firstPointer;

if(pt){

sp *pt1 = new sp;

while(pt->pnt!=NULL)

{

pt1 = pt;

pt = pt->pnt;

if(pt->pnt == NULL)

{

delete pt;

pt = pt1;

pt->pnt = NULL;

}

}

cout<<"Last element delete!\n";

}

else cout<<"Delete element error, but stack not create!\n";

}

void Info()

{

cout<<"Hrebenuk I. A.\tPZS-1644\tvariant 7\n\n\n";

system("pause"); exit(1);

}

 

 


Результат роботи:

Висновок

На даній лабораторній роботі я набув навичок створення і збереження лінійних списків та їх оброблювати. При виконанні завдання було створено програму, яка створює список типу «стек» та виконує над нею процедуру, а саме видалення елементу. Програма містить структуру, в якій оголошено 2 змінні типу int. Програма містить меню вибору: створити список з 11 елементів; вивести елементи; видалити елемент; інформацію про розробника та вихід.