forked from 131/lab5_ivec
46 lines
2.1 KiB
Markdown
46 lines
2.1 KiB
Markdown
# Базовые структуры данных. Вектор
|
||
|
||
* Склонировать репозиторий `https://timp.pw/121/lab5_ivec.git`
|
||
(если репозиторий уже склонирован -- пропустить этот шаг ^_^)
|
||
|
||
В этом задании мы должны реализовать вектор для типа int.
|
||
Вектор -- это динамический массив данных, который может менять свой размер
|
||
в процессе работы.
|
||
|
||
Описание структуры данных ivector в файле `vector.h`
|
||
|
||
Вам необходимо реализовать некоторые функции в файле `./vector.c`
|
||
и пройти тесты (описанные в `./vector_test.c`).
|
||
|
||
Команда для сборки проекта -- **make**
|
||
Команда для запуска тестов -- **make test**
|
||
|
||
|
||
* Необходимо реализовать следующие функции(короткое описание функций можно
|
||
подсмотреть в `vector.h`):
|
||
```
|
||
vector_len
|
||
vector_data
|
||
vector_resize
|
||
vector_initdata
|
||
|
||
vector_set
|
||
vector_get
|
||
vector_push
|
||
vector_pop
|
||
|
||
vector_insert
|
||
vector_del
|
||
```
|
||
|
||
Для функций `vector_insert`, `vector_del` написать тесты в `vector_test.c`
|
||
|
||
Для работы вам могут понадобится следующие библиотечные функции:
|
||
|
||
* `malloc(size_t size)` -- функция, динамически выделяющая **size** байт и возвращающая
|
||
указатель на выделенный кусок
|
||
* `realloc(void *ptr, size_t size)` -- функция, изменяющая размер выделенного куска памяти
|
||
на вход принимает указатель на предыдущий выделенный кусок.
|
||
Функция возвращает указатель на заново выделенную память.
|
||
Все предыдущие данные в `ptr` остаются без изменений
|