Лабораторна робота № 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 елементів; вивести елементи; видалити елемент; інформацію про розробника та вихід.