From 5db5e35a69dedb7fed2ee6e374e5ef0990cceb25 Mon Sep 17 00:00:00 2001 From: anna shalahina Date: Thu, 9 Oct 2025 14:35:04 +0300 Subject: [PATCH 1/3] add src --- src/hello.c | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 src/hello.c diff --git a/src/hello.c b/src/hello.c new file mode 100644 index 0000000..807d128 --- /dev/null +++ b/src/hello.c @@ -0,0 +1,8 @@ +#include +int main() +{ + printf("Hello, world!\n"); + + + return 0; +} From 2a8e9be67813486a248ddcba9f81a48ddba99dda Mon Sep 17 00:00:00 2001 From: anna shalahina Date: Fri, 31 Oct 2025 01:12:50 +0300 Subject: [PATCH 2/3] add build to .gitignore --- .gitignore | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.gitignore b/.gitignore index 845cda6..108080e 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,5 @@ dkms.conf # debug information files *.dwo + +*build/ \ No newline at end of file From ebd1cc701a72a3f835b7c7f2856b1a55b37c5e8d Mon Sep 17 00:00:00 2001 From: anna shalahina Date: Tue, 18 Nov 2025 18:37:24 +0300 Subject: [PATCH 3/3] add tests --- src/list/TestList.c | 92 +++++++++++++++++++++++++++++++++++++++++++++ src/list/list.c | 66 ++++++++++++++++++++++++++++++++ src/list/list.h | 13 +++++++ 3 files changed, 171 insertions(+) create mode 100644 src/list/TestList.c create mode 100644 src/list/list.c create mode 100644 src/list/list.h diff --git a/src/list/TestList.c b/src/list/TestList.c new file mode 100644 index 0000000..d1a6b2c --- /dev/null +++ b/src/list/TestList.c @@ -0,0 +1,92 @@ +#include "list.h" +#include +#include +#include +#include + +bool testInsertIntoEmpty(void) +{ + Node* head = NULL; + insertSorted(&head, 10); + bool result = (head != NULL && head->value == 10 && head->next == NULL); + freeList(head); + return result; +} + +bool testInsertCorrectOrder(void) +{ + Node* head = NULL; + insertSorted(&head, 5); + insertSorted(&head, 3); + insertSorted(&head, 7); + insertSorted(&head, 5); + + bool result = head != NULL && head->value == 3 && head->next != NULL && head->next->value == 5 && head->next->next != NULL && head->next->next->value == 5 && head->next->next->next != NULL && head->next->next->next->value == 7 && head->next->next->next->next == NULL; + + freeList(head); + return result; +} + +bool testDeleteExisting(void) +{ + Node* head = NULL; + insertSorted(&head, 1); + insertSorted(&head, 3); + insertSorted(&head, 5); + + bool result = deleteValue(&head, 3) == 1 && head != NULL && head->value == 1 && head->next != NULL && head->next->value == 5 && head->next->next == NULL; + + freeList(head); + return result; +} + +bool testDeleteNonExisting(void) +{ + Node* head = NULL; + insertSorted(&head, 4); + insertSorted(&head, 6); + + bool result = deleteValue(&head, 100) == 0; + freeList(head); + return result; +} + +bool testDeleteFromEmpty(void) +{ + Node* head = NULL; + return deleteValue(&head, 5) == 0; +} + +bool testDeleteFirstLast(void) +{ + Node* head = NULL; + insertSorted(&head, 2); + insertSorted(&head, 4); + insertSorted(&head, 6); + + bool result = deleteValue(&head, 2) == 1 && deleteValue(&head, 6) == 1 && head != NULL && head->value == 4 && head->next == NULL; + + freeList(head); + return result; +} + +int main(int argc, char* argv[]) +{ + if (argc >1 && strcmp(argv[1], "--test")==0){ + if (!testInsertIntoEmpty() || + !testInsertCorrectOrder() || + !testDeleteExisting() || + !testDeleteNonExisting() || + !testDeleteFromEmpty() || + !testDeleteFirstLast()) { + printf("Tests failed\n"); + return 1; + } + + printf("All tests passed\n"); + return 0; + + } + + return 0; +} \ No newline at end of file diff --git a/src/list/list.c b/src/list/list.c new file mode 100644 index 0000000..51a223d --- /dev/null +++ b/src/list/list.c @@ -0,0 +1,66 @@ +#include +#include +#include "list.h" + + +void insertSorted(Node** head, int value) { + Node* newNode = malloc(sizeof(Node)); + newNode->value = value; + newNode->next = NULL; + + if (*head == NULL || value < (*head)->value) { + newNode->next = *head; + *head = newNode; + return; + } + + + Node* current = *head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + } + + newNode->next = current->next; + current->next = newNode; +} + +int deleteValue(Node** head, int value) { + Node* current = *head; + Node* prev = NULL; + + while (current != NULL && current->value != value) { + prev = current; + current = current->next; + } + + if (current == NULL) return 0; + + if (prev == NULL) *head = current->next; + else prev->next = current->next; + + free(current); + return 1; +} + +void printList(Node* head) { + if (head == NULL) { + printf("Список пуст.\n"); + return; + } + + printf("Список: "); + while (head != NULL) { + printf("%d ", head->value); + head = head->next; + } + printf("\n"); +} + + +void freeList(Node* head) { + while (head != NULL) { + Node* temp = head; + head = head->next; + free(temp); + } +} diff --git a/src/list/list.h b/src/list/list.h new file mode 100644 index 0000000..b678564 --- /dev/null +++ b/src/list/list.h @@ -0,0 +1,13 @@ +#pragma once + +typedef struct Node { + int value; + struct Node* next; +} Node; + +void insertSorted(Node** head, int value); +int deleteValue(Node** head, int value); +void printList(Node* head); +void freeList(Node* head); + +