Skip to content

Instantly share code, notes, and snippets.

@whalemare
Created November 17, 2015 04:20
Show Gist options
  • Save whalemare/0a74198d2d42b90d6ee6 to your computer and use it in GitHub Desktop.
Save whalemare/0a74198d2d42b90d6ee6 to your computer and use it in GitHub Desktop.
Односвязный список
#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;
}
}
#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 = номер элемента
};
#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