1курс,2семестр лабы для зачета / лаба2
.docx
ГУО «БГУИР»
Факультет радиотехники и электроники
Кафедра микро и наноэлектроники
Отчет по
Лабораторной работе №2
Динамическая структура ОЧЕРЕДЬ
Подготовил: Студент гр.943201 Королюк Н.В
Проверила:
Семижон Е.А.
Минск, 2020
Цель: изучить возможности работы со списками, организованными в виде очереди.
Вариант №.11 Код:
#include <iostream>
#include <conio.h>
#include <stdio.h>
using namespace std;
struct Spis {
double info;
Spis* next, * prev;
} *b, * e, * t;
void Create(Spis** b, Spis** e, int in) {
t = new Spis;
t->info = in;
t->prev = t->next = NULL;
*b = *e = t;
}
void View(int kod, Spis* t) {
while (t != NULL) {
cout << t->info << endl;
if (kod == 0) {
t = t->next;
}
else {
t = t->prev;
}
}
}
void Add(int kod, Spis** b, Spis** e, int in) {
t = new Spis;
t->info = in;
if (kod == 0) {
t->prev = NULL;
t->next = *b;
(*b)->prev = t;
(*b) = t;
}
else {
t->next = NULL;
t->prev = *e;
(*e)->next = t;
*e = t;
}
}
void Del_All(Spis** p) {
Spis* t;
while (*p != NULL) {
t = *p;
*p = (*p)->next;
delete t;
}
}
void Zadanie(int kod, Spis* p, Spis* k) {
int count = 0;
double sum = 0;
Spis* t = p;
for (; t != NULL; t = t->next) {
count++;
sum += t->info;
}
sum = sum / count;
//cout << endl << count << endl << sum;
if (kod == 0) {
t = b;
t->info = sum;
}
else
{
t = e;
t->info = sum;
}
}
void main()
{
int in, kod, nom, nom2;
while (true) {
cout << "\n\t Create-1\n\t Add-2\n\t View-3\n\t Del-4\n\t Zad-5\n\t EXIT-0 : ";
cin >> kod;
switch (kod) {
case 1:
if (b != NULL) {
cout << " --Chtoto est'-- " << endl;
break;
}
cout << "Begin info = ";
cin >> in;
Create(&b, &e, in);
cout << "Create Begin = " << b->info << endl;
break;
case 2:
cout << " Info = ";
cin >> in;
cout << "\n\t Add begin-0\n\t Add end-1 : ";
cin >> nom;
Add(nom, &b, &e, in);
if (nom == 0) { t = b; }
else { t = e; }
break;
case 3:
if (!b) {
cout << "----Stack pust----" << endl;
break;
}
cout << " Begin-0\n End-1 : ";
cin >> nom;
if (nom == 0) {
t = b;
cout << "--Begin--" << endl;
}
else {
t = e;
cout << "--End--" << endl;
}
View(nom, t);
break;
case 4:
Del_All(&b);
cout << "---Udaleno---" << endl;
break;
case 5:
cout << " Begin-0\n End-1 : ";
cin >> nom2;
if (nom2 == 0) {
t = b;
}
else {
t = e;
}
Zadanie(nom2, b, b);
break;
case 0:
if (b != NULL)
Del_All(&b);
return;
break;
}
}
}