2023-04-14 17:18:19 +03:00
|
|
|
|
# Базовые структуры данных. Вектор
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
2025-11-14 23:03:58 +03:00
|
|
|
|
* Склонировать репозиторий `https://timplab.syktsu.ru/131/lab5_ivec.git`
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
|
|
|
|
|
В этом задании мы должны реализовать вектор для типа int.
|
|
|
|
|
|
Вектор -- это динамический массив данных, который может менять свой размер
|
|
|
|
|
|
в процессе работы.
|
|
|
|
|
|
|
2023-04-14 17:18:19 +03:00
|
|
|
|
Описание структуры данных ivector в файле `vector.h`
|
2022-04-16 03:34:45 +03:00
|
|
|
|
|
2023-04-14 17:18:19 +03:00
|
|
|
|
Вам необходимо реализовать некоторые функции в файле `./vector.c`
|
|
|
|
|
|
и пройти тесты (описанные в `./vector_test.c`).
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
2023-04-14 17:18:19 +03:00
|
|
|
|
Команда для сборки проекта -- **make**
|
|
|
|
|
|
Команда для запуска тестов -- **make test**
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
|
|
|
|
|
|
2022-04-16 03:34:45 +03:00
|
|
|
|
* Необходимо реализовать следующие функции(короткое описание функций можно
|
2023-04-14 17:18:19 +03:00
|
|
|
|
подсмотреть в `vector.h`):
|
|
|
|
|
|
```
|
2022-04-16 03:24:45 +03:00
|
|
|
|
vector_len
|
|
|
|
|
|
vector_data
|
|
|
|
|
|
vector_resize
|
|
|
|
|
|
vector_initdata
|
|
|
|
|
|
|
|
|
|
|
|
vector_set
|
|
|
|
|
|
vector_get
|
|
|
|
|
|
vector_push
|
|
|
|
|
|
vector_pop
|
|
|
|
|
|
|
|
|
|
|
|
vector_insert
|
|
|
|
|
|
vector_del
|
2023-04-14 17:18:19 +03:00
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Для функций `vector_insert`, `vector_del` написать тесты в `vector_test.c`
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
2022-04-16 03:34:45 +03:00
|
|
|
|
Для работы вам могут понадобится следующие библиотечные функции:
|
2022-04-16 03:24:45 +03:00
|
|
|
|
|
2023-04-14 17:18:19 +03:00
|
|
|
|
* `malloc(size_t size)` -- функция, динамически выделяющая **size** байт и возвращающая
|
2022-04-16 03:34:45 +03:00
|
|
|
|
указатель на выделенный кусок
|
2023-04-14 17:18:19 +03:00
|
|
|
|
* `realloc(void *ptr, size_t size)` -- функция, изменяющая размер выделенного куска памяти
|
2022-04-16 03:34:45 +03:00
|
|
|
|
на вход принимает указатель на предыдущий выделенный кусок.
|
2023-04-14 17:18:19 +03:00
|
|
|
|
Функция возвращает указатель на заново выделенную память.
|
|
|
|
|
|
Все предыдущие данные в `ptr` остаются без изменений
|