Files
lab6_list/README.md
2023-04-22 02:26:34 +03:00

56 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Базовые структуры данных. Список
* Склонировать репозиторий https://timp.pw/121/lab6_list.git
В этом задании необходимо дописать функции для работы с двусвязным списком.
Двусвязный список -- структура данных, которая имеет вид:
```c
struct list_node {
struct list_node *next;
struct list_node *prev;
}
```
Где поля **next** и **prev** указывают на следующий и предыдущий элементы списка.
При этом если предыдущего или следующего элемента списка не существует, указатель должен быть равен **NULL**.
Описание структуры данных в файле `list.h`
Вам необходимо реализовать некоторые функции в файле `./list.c`
и пройти тесты (описанные в `./list_test.c`).
* Необходимо реализовать следующие функции(короткое описание функций можно
подсмотреть в `list.h`):
```
list_clear
list_push_front
list_len
Эти функции проверяет тест test_list_stage1
list_push_back
list_get
list_insert
list_pop_front
list_pop_back
list_remove
Эту функцию проверяет тест test_list_remove
list_reverse
Эту функцию проверяет тест test_list_reverse
```
## Дополнительная информация
* Команда для сборки проекта -- **make**
* Команда для запуска тестов -- **make test**
Для работы вам могут понадобится следующие библиотечные функции:
* `malloc(size_t size)` -- функция, динамически выделяющая size байт и возвращающая
указатель на выделенный кусок
* `realloc(void *ptr, size_t size)` -- функция изменяющая размер выделенного куска памяти
на вход принимает указатель на предыдущий выделенный кусок.
возвращает укзаатель на заново выделенную память.
Все предыдущие данные в ptr остаются без изменений