Інформація про виконавця завдання
Звіт
Про виконання лабораторної роботи №4
з дисципліни “Алгоритми та структури даних”
Перевірив: Ст. викладач Кафедри ПЗАС Михайленко Н. С. | Виконав: Студент 3-го курсу Групи ПЗС-1644 Гребенюк І. А. |
Черкаси 2016
Лабораторна робота № 4 (4 год.).
Тема роботи: вивчення лінійних списків.
Мета роботи: набути практичні навички створення та збереження лінійних списків. Обробка лінійних списків.
Постановка задачі: Створити найпростіше меню для виклику процедур:
• створення списку;
• виведення всього списку;
• виклику заданої процедури.
Створити список заданої структури. Заповнити його інформаційну частину випадковими числами. Створити процедури для обробки списку відповідно до завдання.
Методичні вказівки до роботи:
1) При створенні списку врахувати задану кількість елементів і їх структуру.
2) забезпечити заповнення списку випадковими числами відповідно до завдання.
3) Процедурам в якості параметру передавати інформацію відповідно до типу списку та призначення процедури (адреса початку списку та ін.)
4) Завдання відповідно до варіанту вибрати з Таблиці 1.
Зміст звіту:
1) Тема і мета роботи.
2) Індивідуальне завдання.
3) Текст програми на С++.
4) Результати роботи програми.
5) Інформація про виконавця завдання.
6) Висновок до роботи.
№ | Тип | Кількість елементів | Поля | Призначення процедури |
Стек | Int+int | Видалити елемент |
Теоретичні відомості
Лістинг програми
#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), vived(sp **firstPointer), delOb(sp **firstPointer);
int main()
{
int key(0);
while(1)
{
cout<<setfill('=')<<setw(144);
cout<<"\n1. Create stack\t\t2. Print to monitor\n3. Delete element\t4. 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: exit(1); 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";
}
Результат роботи:
Інформація про виконавця завдання
Висновок
На даній лабораторній роботі я набув навичок створення і збереження лінійних списків та їх оброблювати. При виконанні завдання було створено програму, яка створює список типу «стек» та виконує над нею процедуру, а саме видалення елементу. Програма містить структуру, в якій оголошено 2 змінні типу int. Програма містить меню вибору: створити список з 11 елементів; вивести елементи; видалити елемент; вихід.