Created
November 17, 2015 04:20
-
-
Save whalemare/0a74198d2d42b90d6ee6 to your computer and use it in GitHub Desktop.
Односвязный список
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include "stdafx.h" | |
#include "List.h" | |
List::~List() | |
{ | |
while (HEAD != NULL) // Пока по адресу хоть что-то есть | |
{ | |
Mass *temp = HEAD -> Next; // Запишем указатель на адрес следующего элемента структуры | |
delete HEAD; // Освобождаем память по месту начала списка | |
HEAD = temp; // Меняем адрес начала списка | |
} | |
} | |
void List::add(Mass &mass) | |
{ | |
Mass *temp = new Mass(); // Выделяем память под новую структуру | |
temp->Next = HEAD; // меняем адрес начала списка | |
size++; // увеличиваем переменную хранящую размер на 1 | |
temp->sz = mass.sz; // копируем размер массива в созданную переменную | |
for (int i = 0; i < mass.sz; i++) // копируем элементы массива | |
temp->buf[i] = mass.buf[i]; | |
HEAD = temp; // меняем адрес начала списка | |
} | |
void List::show() | |
{ | |
Mass *temp = HEAD; // объявляем указатель и пусть он указывает на начало списка | |
int i = 0; | |
while (temp != NULL) // пока есть на что указывать | |
{ | |
cout << i << " массив: "; | |
for (int i = 0; i < temp->sz; i++) | |
{ | |
cout << temp->buf[i] << " "; | |
} | |
cout << endl; | |
temp = temp->Next; | |
i++; | |
} | |
} | |
void List::pop(int n) | |
{ | |
Mass *temp = HEAD; // обращаемся к началу списка | |
if ((HEAD != NULL) && (n <= size) && (n>=0)) // если по этому номеру что-то лежит и этот элемент внутри списка | |
{ | |
for (int i = 0; i < n; i++) | |
temp = temp->Next; | |
cout << *temp; | |
} | |
} | |
void List::del(int n) | |
{ | |
Mass *temp = NULL, *b; | |
int i = 0; // ?? | |
if ((n > size) || (n < 0)) | |
{ | |
cout << "Такого элемента нет"; | |
return; | |
} | |
else | |
{ | |
for (int i = 0; i < n; i++) | |
temp = temp->Next; | |
} | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#pragma once | |
#include "Mass.h" | |
class List | |
// Односвязный список (он же List) | |
{ | |
private: | |
Mass *HEAD; // указатель на начало списка | |
int size; // размер массива | |
public: | |
List():HEAD(NULL){}; | |
~List(); | |
void add(Mass &mass); // функция добавления элемента | |
void show(); // функция распечатки списка | |
void del(int n); // функци удаления элемента из списка; n = номер элемента | |
void pop(int n); // получаем элемент из списка; n = номер элемента | |
}; | |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#include <stdlib.h> // для system("pause"); | |
#include <locale.h> // для русской консоли | |
#include "List.h" | |
#include <iostream> | |
using namespace std; | |
int main() { | |
setlocale(LC_ALL, "rus"); | |
cout << "Лабораторная работа №5\n\n"; | |
List list; // объявили объект список; | |
int n; // размер массива | |
int k; // число массивов | |
cout << "Введите количество вводимых массивов: "; | |
cin >> k; | |
cout << "Введите размеры массивов: "; | |
cin >> n; | |
Mass massiv(n); // создаем объект массив | |
for (int i = 0; i < k; i++) | |
{ | |
cin >> massiv; // вводим элементы массива | |
list.add(massiv); // заносим их в список | |
} | |
cout << endl; | |
list.show(); // выводим наш список элементов | |
cout << "Введите номер элемента который нужно извлечь: \n"; | |
cin >> n; | |
list.pop(n); | |
cout << "Введите номер элемента который нужно удалить: \n"; | |
cin >> n; | |
list.del(n); | |
cout << endl; | |
list.show(); | |
system("pause"); | |
return 0; | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment