From c73176035de5c2987c1cf21ef525387d07d904b1 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 23 Nov 2025 17:45:15 +0300 Subject: [PATCH 01/17] =?UTF-8?q?CI=20=D0=B4=D0=BB=D1=8F=20clanf-format?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.clang-format | 245 ++++++++++++++++++ .CIclang/.github/dependabot.yml | 6 + .CIclang/.github/workflows/build-and-lint.yml | 24 ++ 3 files changed, 275 insertions(+) create mode 100644 .CIclang/.clang-format create mode 100644 .CIclang/.github/dependabot.yml create mode 100644 .CIclang/.github/workflows/build-and-lint.yml diff --git a/.CIclang/.clang-format b/.CIclang/.clang-format new file mode 100644 index 0000000..e2cbc59 --- /dev/null +++ b/.CIclang/.clang-format @@ -0,0 +1,245 @@ +--- +Language: Cpp +# BasedOnStyle: WebKit +AccessModifierOffset: -4 +AlignAfterOpenBracket: DontAlign +AlignArrayOfStructures: None +AlignConsecutiveAssignments: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: true +AlignConsecutiveBitFields: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveDeclarations: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveMacros: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCompound: false + AlignFunctionPointers: false + PadOperators: false +AlignConsecutiveShortCaseStatements: + Enabled: false + AcrossEmptyLines: false + AcrossComments: false + AlignCaseColons: false +AlignEscapedNewlines: Right +AlignOperands: DontAlign +AlignTrailingComments: + Kind: Never + OverEmptyLines: 0 +AllowAllArgumentsOnNextLine: true +AllowAllParametersOfDeclarationOnNextLine: true +AllowBreakBeforeNoexceptSpecifier: Never +AllowShortBlocksOnASingleLine: Empty +AllowShortCaseLabelsOnASingleLine: false +AllowShortCompoundRequirementOnASingleLine: true +AllowShortEnumsOnASingleLine: true +AllowShortFunctionsOnASingleLine: All +AllowShortIfStatementsOnASingleLine: Never +AllowShortLambdasOnASingleLine: All +AllowShortLoopsOnASingleLine: false +AlwaysBreakAfterDefinitionReturnType: None +AlwaysBreakAfterReturnType: None +AlwaysBreakBeforeMultilineStrings: false +AlwaysBreakTemplateDeclarations: MultiLine +AttributeMacros: + - __capability +BinPackArguments: true +BinPackParameters: true +BitFieldColonSpacing: Both +BraceWrapping: + AfterCaseLabel: false + AfterClass: false + AfterControlStatement: Never + AfterEnum: false + AfterExternBlock: false + AfterFunction: true + AfterNamespace: false + AfterObjCDeclaration: false + AfterStruct: false + AfterUnion: false + BeforeCatch: false + BeforeElse: false + BeforeLambdaBody: false + BeforeWhile: false + IndentBraces: false + SplitEmptyFunction: true + SplitEmptyRecord: true + SplitEmptyNamespace: true +BreakAdjacentStringLiterals: true +BreakAfterAttributes: Leave +BreakAfterJavaFieldAnnotations: false +BreakArrays: true +BreakBeforeBinaryOperators: All +BreakBeforeConceptDeclarations: Always +BreakBeforeBraces: WebKit +BreakBeforeInlineASMColon: OnlyMultiline +BreakBeforeTernaryOperators: true +BreakConstructorInitializers: BeforeComma +BreakInheritanceList: BeforeColon +BreakStringLiterals: true +ColumnLimit: 0 +CommentPragmas: '^ IWYU pragma:' +CompactNamespaces: false +ConstructorInitializerIndentWidth: 4 +ContinuationIndentWidth: 4 +Cpp11BracedListStyle: false +DerivePointerAlignment: false +DisableFormat: false +EmptyLineAfterAccessModifier: Never +EmptyLineBeforeAccessModifier: LogicalBlock +ExperimentalAutoDetectBinPacking: false +FixNamespaceComments: false +ForEachMacros: + - foreach + - Q_FOREACH + - BOOST_FOREACH +IfMacros: + - KJ_IF_MAYBE +IncludeBlocks: Preserve +IncludeCategories: + - Regex: '^"(llvm|llvm-c|clang|clang-c)/' + Priority: 2 + SortPriority: 0 + CaseSensitive: false + - Regex: '^(<|"(gtest|gmock|isl|json)/)' + Priority: 3 + SortPriority: 0 + CaseSensitive: false + - Regex: '.*' + Priority: 1 + SortPriority: 0 + CaseSensitive: false +IncludeIsMainRegex: '(Test)?$' +IncludeIsMainSourceRegex: '' +IndentAccessModifiers: false +IndentCaseBlocks: false +IndentCaseLabels: false +IndentExternBlock: AfterExternBlock +IndentGotoLabels: true +IndentPPDirectives: None +IndentRequiresClause: true +IndentWidth: 4 +IndentWrappedFunctionNames: false +InsertBraces: false +InsertNewlineAtEOF: false +InsertTrailingCommas: None +IntegerLiteralSeparator: + Binary: 0 + BinaryMinDigits: 0 + Decimal: 0 + DecimalMinDigits: 0 + Hex: 0 + HexMinDigits: 0 +JavaScriptQuotes: Leave +JavaScriptWrapImports: true +KeepEmptyLinesAtTheStartOfBlocks: true +KeepEmptyLinesAtEOF: false +LambdaBodyIndentation: Signature +LineEnding: DeriveLF +MacroBlockBegin: '' +MacroBlockEnd: '' +MaxEmptyLinesToKeep: 1 +NamespaceIndentation: Inner +ObjCBinPackProtocolList: Auto +ObjCBlockIndentWidth: 4 +ObjCBreakBeforeNestedBlockParam: true +ObjCSpaceAfterProperty: true +ObjCSpaceBeforeProtocolList: true +PackConstructorInitializers: BinPack +PenaltyBreakAssignment: 2 +PenaltyBreakBeforeFirstCallParameter: 19 +PenaltyBreakComment: 300 +PenaltyBreakFirstLessLess: 120 +PenaltyBreakOpenParenthesis: 0 +PenaltyBreakScopeResolution: 500 +PenaltyBreakString: 1000 +PenaltyBreakTemplateDeclaration: 10 +PenaltyExcessCharacter: 1000000 +PenaltyIndentedWhitespace: 0 +PenaltyReturnTypeOnItsOwnLine: 60 +PointerAlignment: Left +PPIndentWidth: -1 +QualifierAlignment: Leave +ReferenceAlignment: Pointer +ReflowComments: true +RemoveBracesLLVM: false +RemoveParentheses: Leave +RemoveSemicolon: false +RequiresClausePosition: OwnLine +RequiresExpressionIndentation: OuterScope +SeparateDefinitionBlocks: Leave +ShortNamespaceLines: 1 +SkipMacroDefinitionBody: false +SortIncludes: CaseSensitive +SortJavaStaticImport: Before +SortUsingDeclarations: LexicographicNumeric +SpaceAfterCStyleCast: false +SpaceAfterLogicalNot: false +SpaceAfterTemplateKeyword: true +SpaceAroundPointerQualifiers: Default +SpaceBeforeAssignmentOperators: true +SpaceBeforeCaseColon: false +SpaceBeforeCpp11BracedList: true +SpaceBeforeCtorInitializerColon: true +SpaceBeforeInheritanceColon: true +SpaceBeforeJsonColon: false +SpaceBeforeParens: ControlStatements +SpaceBeforeParensOptions: + AfterControlStatements: true + AfterForeachMacros: true + AfterFunctionDefinitionName: false + AfterFunctionDeclarationName: false + AfterIfMacros: true + AfterOverloadedOperator: false + AfterPlacementOperator: true + AfterRequiresInClause: false + AfterRequiresInExpression: false + BeforeNonEmptyParentheses: false +SpaceBeforeRangeBasedForLoopColon: true +SpaceBeforeSquareBrackets: false +SpaceInEmptyBlock: true +SpacesBeforeTrailingComments: 1 +SpacesInAngles: Never +SpacesInContainerLiterals: true +SpacesInLineCommentPrefix: + Minimum: 1 + Maximum: -1 +SpacesInParens: Never +SpacesInParensOptions: + InCStyleCasts: false + InConditionalStatements: false + InEmptyParentheses: false + Other: false +SpacesInSquareBrackets: false +Standard: Latest +StatementAttributeLikeMacros: + - Q_EMIT +StatementMacros: + - Q_UNUSED + - QT_REQUIRE_VERSION +TabWidth: 8 +UseTab: Never +VerilogBreakBetweenInstancePorts: true +WhitespaceSensitiveMacros: + - BOOST_PP_STRINGIZE + - CF_SWIFT_NAME + - NS_SWIFT_NAME + - PP_STRINGIZE + - STRINGIZE +... \ No newline at end of file diff --git a/.CIclang/.github/dependabot.yml b/.CIclang/.github/dependabot.yml new file mode 100644 index 0000000..355e687 --- /dev/null +++ b/.CIclang/.github/dependabot.yml @@ -0,0 +1,6 @@ +version: 2 +updates: + - package-ecosystem: github-actions + directory: / + schedule: + interval: "weekly" \ No newline at end of file diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.CIclang/.github/workflows/build-and-lint.yml new file mode 100644 index 0000000..9d85c5a --- /dev/null +++ b/.CIclang/.github/workflows/build-and-lint.yml @@ -0,0 +1,24 @@ +name: Build and lint + +on: + - push + - pull_request + +jobs: + build-and-lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v5 + - name: Check format + run: | + find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror + - name: Configure + run: | + # -DCMAKE_EXPORT_COMPILE_COMMANDS=ON is important for clang-tidy + cmake . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON + - name: Build + run: | + cmake --build build + - name: Lint + run: | + run-clang-tidy-18 -p=build \ No newline at end of file From 59d707baf4f63ba5bb8dbc1ca7bb8136418250ca Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 23 Nov 2025 17:54:41 +0300 Subject: [PATCH 02/17] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D0=B0=D0=B9=D0=BB=20build-and-lint.yml?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.github/workflows/build-and-lint.yml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.CIclang/.github/workflows/build-and-lint.yml index 9d85c5a..a2c12fd 100644 --- a/.CIclang/.github/workflows/build-and-lint.yml +++ b/.CIclang/.github/workflows/build-and-lint.yml @@ -12,13 +12,3 @@ jobs: - name: Check format run: | find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror - - name: Configure - run: | - # -DCMAKE_EXPORT_COMPILE_COMMANDS=ON is important for clang-tidy - cmake . -B build -DCMAKE_EXPORT_COMPILE_COMMANDS=ON - - name: Build - run: | - cmake --build build - - name: Lint - run: | - run-clang-tidy-18 -p=build \ No newline at end of file From 3d5456db569b79d9e6944a88d5c7a8c7df3b0fd3 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sat, 20 Dec 2025 21:23:02 +0300 Subject: [PATCH 03/17] =?UTF-8?q?=D0=A0=D0=B5=D0=B0=D0=BB=D0=B8=D0=B7?= =?UTF-8?q?=D0=B0=D1=86=D0=B8=D1=8F=20=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=BD=D0=BE=D0=B3=D0=BE=20=D1=81=D0=BF?= =?UTF-8?q?=D0=B8=D1=81=D0=BA=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sortList/sortList.c | 104 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 sortList/sortList.c diff --git a/sortList/sortList.c b/sortList/sortList.c new file mode 100644 index 0000000..f953787 --- /dev/null +++ b/sortList/sortList.c @@ -0,0 +1,104 @@ +#include +#include +#include + +// элемент списка +typedef struct ListNode { + // значение + int value; + // ссылка на следующую "ячейку" + struct ListNode* next; +} ListNode; + +typedef struct List { + ListNode* head; +} List; + +// структура списка +ListNode* new(int value) +{ + ListNode* node = (ListNode*)malloc(sizeof(ListNode)); + node->value = value; + node->next = NULL; + return node; +} + +// положить элемент в соответствии с сортировкой +void insert(List* list, int value) +{ + ListNode* newNode = new(value); + + // Если список пуст или новый элемент меньше головы + if (list->head == NULL || value < list->head->value) { + newNode->next = list->head; + list->head = newNode; + return; + } + + // поиск того, куда вставить новый элемент + ListNode* current = list->head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + } + + // вставка + newNode->next = current->next; + current->next = newNode; +} + +// проверка на возможность удаления элемента +bool deleteNode(List* list, int value) +{ + // если список пустой + if (list->head == NULL) { + return false; + } + + // если элемент это голова + if (list->head->value == value) { + ListNode* temprery = list->head; + list->head = list->head->next; + free(temprery); + return true; + } + + // поиск элемента для удаления + ListNode* current = list->head; + while (current->next != NULL && current->next->value != value) { + current = current->next; + } + + // Если элемент не найден + if (current->next == NULL) { + return 0; + } + + // удаление элемента + ListNode* temprery = current->next; + current->next = temprery->next; + free(temprery); + return true; +} + +// вывод списка +void printList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + printf("%d ", current->value); + current = current->next; + } + printf("\n"); +} + +// удаление списка +void deleteList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + ListNode* temprery = current; + current = current->next; + free(temprery); + } + list->head = NULL; +} From 6e37761b07621fbebd76c8a8f9784308c4788e93 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sat, 20 Dec 2025 22:05:08 +0300 Subject: [PATCH 04/17] =?UTF-8?q?=D0=9F=D0=BE=D0=B4=D0=BF=D1=80=D0=B0?= =?UTF-8?q?=D0=B2=D0=B8=D0=BB=20=D0=B8=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=85=D0=B5=D0=B4=D0=B5=D1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sortList/sortList.c | 21 ++++++++++----------- sortList/sortList.h | 10 ++++++++++ 2 files changed, 20 insertions(+), 11 deletions(-) create mode 100644 sortList/sortList.h diff --git a/sortList/sortList.c b/sortList/sortList.c index f953787..43bf508 100644 --- a/sortList/sortList.c +++ b/sortList/sortList.c @@ -1,4 +1,4 @@ -#include +#include "sortList.h" #include #include @@ -14,19 +14,18 @@ typedef struct List { ListNode* head; } List; -// структура списка -ListNode* new(int value) +List* newList() { - ListNode* node = (ListNode*)malloc(sizeof(ListNode)); - node->value = value; - node->next = NULL; - return node; + List* list = { NULL }; + return list; } // положить элемент в соответствии с сортировкой void insert(List* list, int value) { - ListNode* newNode = new(value); + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->next = NULL; // Если список пуст или новый элемент меньше головы if (list->head == NULL || value < list->head->value) { @@ -70,12 +69,12 @@ bool deleteNode(List* list, int value) // Если элемент не найден if (current->next == NULL) { - return 0; + return false; } // удаление элемента ListNode* temprery = current->next; - current->next = temprery->next; + current->next = current->next->next; free(temprery); return true; } @@ -101,4 +100,4 @@ void deleteList(List* list) free(temprery); } list->head = NULL; -} +} \ No newline at end of file diff --git a/sortList/sortList.h b/sortList/sortList.h new file mode 100644 index 0000000..b94db67 --- /dev/null +++ b/sortList/sortList.h @@ -0,0 +1,10 @@ +#pragma once +#include + +typedef struct List List; + +List* newList(); +void insert(List* list, int value); +bool deleteNode(List* list, int value); +void printList(List* list); +void deleteList(List* list); \ No newline at end of file From 3c7baa0dc3a07df7b4e3f1c410f6eca4606e166e Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sat, 20 Dec 2025 22:34:50 +0300 Subject: [PATCH 05/17] =?UTF-8?q?6=20=D0=B4=D0=BE=D0=BC=D0=B0=D1=88=D0=BD?= =?UTF-8?q?=D0=B5=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5=20?= =?UTF-8?q?=D1=81=D0=BE=D1=80=D1=82=D0=B8=D1=80=D0=BE=D0=B2=D0=BE=D1=87?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D1=81=D0=BF=D0=B8=D1=81=D0=BE=D0=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/CMakeLists.txt | 19 +++++++++++++++++++ hw.sortList/main.c | 38 ++++++++++++++++++++++++++++++++++++++ 2 files changed, 57 insertions(+) create mode 100644 hw.sortList/CMakeLists.txt create mode 100644 hw.sortList/main.c diff --git a/hw.sortList/CMakeLists.txt b/hw.sortList/CMakeLists.txt new file mode 100644 index 0000000..1fafe6c --- /dev/null +++ b/hw.sortList/CMakeLists.txt @@ -0,0 +1,19 @@ +cmake_minimum_required(VERSION 3.25) +project(rewrite C) + +set(CMAKE_C_STANDARD 11) +set(CMAKE_C_STANDARD_REQUIRED ON) + +# Создаём библиотеку из файла в поддиректории +add_library(sortList sortList/sortList.c) + +# Создаём исполняемый файл из файла в другой поддиректории +add_executable(main hw.sort.List/main.c) + +# Линкуем библиотеку +target_link_libraries(main PRIVATE sortList) + +# Добавляем путь к заголовочным файлам библиотеки +target_include_directories(main PRIVATE + ${CMAKE_SOURCE_DIR}/sortList +) \ No newline at end of file diff --git a/hw.sortList/main.c b/hw.sortList/main.c new file mode 100644 index 0000000..aa670ba --- /dev/null +++ b/hw.sortList/main.c @@ -0,0 +1,38 @@ +#include "../sortList/sortList.h" +#include +#include +#include + +int main(int argc, char** argv) +{ + List* list = newList(); + int value = 0; + + printf("Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "); + int operation = 0; + scanf("%d", &operation); + while (operation != 0) { + if (operation == 1) { + printf("Ведите, какое значение вставить: "); + scanf("%d", &value); + insert(list, value); + } else if (operation == 2) { + printf("Ведите, какое значение удалить: "); + scanf("%d", &value); + if (deleteNode(list, value)) { + printf("Элемент удален\n"); + } else { + printf("Удалить элемент невозможно\n"); + } + } else if (operation == 3) { + printList(list); + } else { + printf("Такой операции нет\n"); + } + printf("Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "); + scanf("%d", &operation); + } + printf("Вы вышли\n"); + deleteList(list); + return 0; +} \ No newline at end of file From 00f3c593abd9de9402bdfa901c9fc8c89192f88a Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sat, 20 Dec 2025 22:57:45 +0300 Subject: [PATCH 06/17] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BB=D0=B8=D1=88=D0=BD=D0=B8=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .CIclang/.clang-format | 245 ------------------ .CIclang/.github/dependabot.yml | 6 - .CIclang/.github/workflows/build-and-lint.yml | 14 - 3 files changed, 265 deletions(-) delete mode 100644 .CIclang/.clang-format delete mode 100644 .CIclang/.github/dependabot.yml delete mode 100644 .CIclang/.github/workflows/build-and-lint.yml diff --git a/.CIclang/.clang-format b/.CIclang/.clang-format deleted file mode 100644 index e2cbc59..0000000 --- a/.CIclang/.clang-format +++ /dev/null @@ -1,245 +0,0 @@ ---- -Language: Cpp -# BasedOnStyle: WebKit -AccessModifierOffset: -4 -AlignAfterOpenBracket: DontAlign -AlignArrayOfStructures: None -AlignConsecutiveAssignments: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: true -AlignConsecutiveBitFields: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveDeclarations: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveMacros: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCompound: false - AlignFunctionPointers: false - PadOperators: false -AlignConsecutiveShortCaseStatements: - Enabled: false - AcrossEmptyLines: false - AcrossComments: false - AlignCaseColons: false -AlignEscapedNewlines: Right -AlignOperands: DontAlign -AlignTrailingComments: - Kind: Never - OverEmptyLines: 0 -AllowAllArgumentsOnNextLine: true -AllowAllParametersOfDeclarationOnNextLine: true -AllowBreakBeforeNoexceptSpecifier: Never -AllowShortBlocksOnASingleLine: Empty -AllowShortCaseLabelsOnASingleLine: false -AllowShortCompoundRequirementOnASingleLine: true -AllowShortEnumsOnASingleLine: true -AllowShortFunctionsOnASingleLine: All -AllowShortIfStatementsOnASingleLine: Never -AllowShortLambdasOnASingleLine: All -AllowShortLoopsOnASingleLine: false -AlwaysBreakAfterDefinitionReturnType: None -AlwaysBreakAfterReturnType: None -AlwaysBreakBeforeMultilineStrings: false -AlwaysBreakTemplateDeclarations: MultiLine -AttributeMacros: - - __capability -BinPackArguments: true -BinPackParameters: true -BitFieldColonSpacing: Both -BraceWrapping: - AfterCaseLabel: false - AfterClass: false - AfterControlStatement: Never - AfterEnum: false - AfterExternBlock: false - AfterFunction: true - AfterNamespace: false - AfterObjCDeclaration: false - AfterStruct: false - AfterUnion: false - BeforeCatch: false - BeforeElse: false - BeforeLambdaBody: false - BeforeWhile: false - IndentBraces: false - SplitEmptyFunction: true - SplitEmptyRecord: true - SplitEmptyNamespace: true -BreakAdjacentStringLiterals: true -BreakAfterAttributes: Leave -BreakAfterJavaFieldAnnotations: false -BreakArrays: true -BreakBeforeBinaryOperators: All -BreakBeforeConceptDeclarations: Always -BreakBeforeBraces: WebKit -BreakBeforeInlineASMColon: OnlyMultiline -BreakBeforeTernaryOperators: true -BreakConstructorInitializers: BeforeComma -BreakInheritanceList: BeforeColon -BreakStringLiterals: true -ColumnLimit: 0 -CommentPragmas: '^ IWYU pragma:' -CompactNamespaces: false -ConstructorInitializerIndentWidth: 4 -ContinuationIndentWidth: 4 -Cpp11BracedListStyle: false -DerivePointerAlignment: false -DisableFormat: false -EmptyLineAfterAccessModifier: Never -EmptyLineBeforeAccessModifier: LogicalBlock -ExperimentalAutoDetectBinPacking: false -FixNamespaceComments: false -ForEachMacros: - - foreach - - Q_FOREACH - - BOOST_FOREACH -IfMacros: - - KJ_IF_MAYBE -IncludeBlocks: Preserve -IncludeCategories: - - Regex: '^"(llvm|llvm-c|clang|clang-c)/' - Priority: 2 - SortPriority: 0 - CaseSensitive: false - - Regex: '^(<|"(gtest|gmock|isl|json)/)' - Priority: 3 - SortPriority: 0 - CaseSensitive: false - - Regex: '.*' - Priority: 1 - SortPriority: 0 - CaseSensitive: false -IncludeIsMainRegex: '(Test)?$' -IncludeIsMainSourceRegex: '' -IndentAccessModifiers: false -IndentCaseBlocks: false -IndentCaseLabels: false -IndentExternBlock: AfterExternBlock -IndentGotoLabels: true -IndentPPDirectives: None -IndentRequiresClause: true -IndentWidth: 4 -IndentWrappedFunctionNames: false -InsertBraces: false -InsertNewlineAtEOF: false -InsertTrailingCommas: None -IntegerLiteralSeparator: - Binary: 0 - BinaryMinDigits: 0 - Decimal: 0 - DecimalMinDigits: 0 - Hex: 0 - HexMinDigits: 0 -JavaScriptQuotes: Leave -JavaScriptWrapImports: true -KeepEmptyLinesAtTheStartOfBlocks: true -KeepEmptyLinesAtEOF: false -LambdaBodyIndentation: Signature -LineEnding: DeriveLF -MacroBlockBegin: '' -MacroBlockEnd: '' -MaxEmptyLinesToKeep: 1 -NamespaceIndentation: Inner -ObjCBinPackProtocolList: Auto -ObjCBlockIndentWidth: 4 -ObjCBreakBeforeNestedBlockParam: true -ObjCSpaceAfterProperty: true -ObjCSpaceBeforeProtocolList: true -PackConstructorInitializers: BinPack -PenaltyBreakAssignment: 2 -PenaltyBreakBeforeFirstCallParameter: 19 -PenaltyBreakComment: 300 -PenaltyBreakFirstLessLess: 120 -PenaltyBreakOpenParenthesis: 0 -PenaltyBreakScopeResolution: 500 -PenaltyBreakString: 1000 -PenaltyBreakTemplateDeclaration: 10 -PenaltyExcessCharacter: 1000000 -PenaltyIndentedWhitespace: 0 -PenaltyReturnTypeOnItsOwnLine: 60 -PointerAlignment: Left -PPIndentWidth: -1 -QualifierAlignment: Leave -ReferenceAlignment: Pointer -ReflowComments: true -RemoveBracesLLVM: false -RemoveParentheses: Leave -RemoveSemicolon: false -RequiresClausePosition: OwnLine -RequiresExpressionIndentation: OuterScope -SeparateDefinitionBlocks: Leave -ShortNamespaceLines: 1 -SkipMacroDefinitionBody: false -SortIncludes: CaseSensitive -SortJavaStaticImport: Before -SortUsingDeclarations: LexicographicNumeric -SpaceAfterCStyleCast: false -SpaceAfterLogicalNot: false -SpaceAfterTemplateKeyword: true -SpaceAroundPointerQualifiers: Default -SpaceBeforeAssignmentOperators: true -SpaceBeforeCaseColon: false -SpaceBeforeCpp11BracedList: true -SpaceBeforeCtorInitializerColon: true -SpaceBeforeInheritanceColon: true -SpaceBeforeJsonColon: false -SpaceBeforeParens: ControlStatements -SpaceBeforeParensOptions: - AfterControlStatements: true - AfterForeachMacros: true - AfterFunctionDefinitionName: false - AfterFunctionDeclarationName: false - AfterIfMacros: true - AfterOverloadedOperator: false - AfterPlacementOperator: true - AfterRequiresInClause: false - AfterRequiresInExpression: false - BeforeNonEmptyParentheses: false -SpaceBeforeRangeBasedForLoopColon: true -SpaceBeforeSquareBrackets: false -SpaceInEmptyBlock: true -SpacesBeforeTrailingComments: 1 -SpacesInAngles: Never -SpacesInContainerLiterals: true -SpacesInLineCommentPrefix: - Minimum: 1 - Maximum: -1 -SpacesInParens: Never -SpacesInParensOptions: - InCStyleCasts: false - InConditionalStatements: false - InEmptyParentheses: false - Other: false -SpacesInSquareBrackets: false -Standard: Latest -StatementAttributeLikeMacros: - - Q_EMIT -StatementMacros: - - Q_UNUSED - - QT_REQUIRE_VERSION -TabWidth: 8 -UseTab: Never -VerilogBreakBetweenInstancePorts: true -WhitespaceSensitiveMacros: - - BOOST_PP_STRINGIZE - - CF_SWIFT_NAME - - NS_SWIFT_NAME - - PP_STRINGIZE - - STRINGIZE -... \ No newline at end of file diff --git a/.CIclang/.github/dependabot.yml b/.CIclang/.github/dependabot.yml deleted file mode 100644 index 355e687..0000000 --- a/.CIclang/.github/dependabot.yml +++ /dev/null @@ -1,6 +0,0 @@ -version: 2 -updates: - - package-ecosystem: github-actions - directory: / - schedule: - interval: "weekly" \ No newline at end of file diff --git a/.CIclang/.github/workflows/build-and-lint.yml b/.CIclang/.github/workflows/build-and-lint.yml deleted file mode 100644 index a2c12fd..0000000 --- a/.CIclang/.github/workflows/build-and-lint.yml +++ /dev/null @@ -1,14 +0,0 @@ -name: Build and lint - -on: - - push - - pull_request - -jobs: - build-and-lint: - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v5 - - name: Check format - run: | - find . -path ./build -prune -o -type f -name '*.[c|h]' -print | xargs clang-format-18 --style=file --dry-run -Werror From 43d816146f79589065d7311d5025947d7b83731a Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 15:32:42 +0300 Subject: [PATCH 07/17] =?UTF-8?q?=D0=94=D0=BE=D0=BC=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=82=D0=B5=D1=81=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 54 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index aa670ba..299d0ca 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -3,8 +3,62 @@ #include #include +bool testDeleteEmptyNode() +{ + List list = newList(); + return !deleteNode(list, 123313); +} + +bool testDeleteNode() +{ + List list = newList(); + inert(list, 5); + return deleteNode(list, 5); +} + +bool testDeleteEmptyList() +{ + List list = newList(); + deleteList(list); + return list == NULL; +} + +bool testDeleteList() +{ + List list = newList(); + insert(list, 5); + insert(list, 4); + deleteList(list); + return list == NULL; +} + +bool test() +{ + if (testDeleteEmptyList()) { + if (testDeleteEmptyNode()) { + if (testDeleteList()) { + if (testDeleteNode()) { + return true; + } + } + } + } + return false; +} + int main(int argc, char** argv) { + + if (argv[0] == "--test") { + if (!test()) { + printf("Test failed\n"); + return 1; + } else { + printf("Test passed\n"); + return 0; + } + } + List* list = newList(); int value = 0; From e3d2600dadb9885da25c9b3b87b8741dfc77a9f2 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 15:34:07 +0300 Subject: [PATCH 08/17] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20?= =?UTF-8?q?=D0=B4=D0=BB=D1=8F=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8?= =?UTF-8?q?=D1=8F=20=D0=BB=D0=B8=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sortList/sortList.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sortList/sortList.c b/sortList/sortList.c index 43bf508..82f73bc 100644 --- a/sortList/sortList.c +++ b/sortList/sortList.c @@ -16,7 +16,8 @@ typedef struct List { List* newList() { - List* list = { NULL }; + List* list = (List*)malloc(sizeof(List)); + list->head = NULL; return list; } From dd7caf351798f006cc4c1480acd3672052f87c6e Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 18:16:46 +0300 Subject: [PATCH 09/17] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B8=D1=81=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw.sortList/CMakeLists.txt b/hw.sortList/CMakeLists.txt index 1fafe6c..267037d 100644 --- a/hw.sortList/CMakeLists.txt +++ b/hw.sortList/CMakeLists.txt @@ -8,7 +8,7 @@ set(CMAKE_C_STANDARD_REQUIRED ON) add_library(sortList sortList/sortList.c) # Создаём исполняемый файл из файла в другой поддиректории -add_executable(main hw.sort.List/main.c) +add_executable(main hw.sortList/main.c) # Линкуем библиотеку target_link_libraries(main PRIVATE sortList) From 3629e782e97294e1f3f882ce229deac3d6ad0791 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Sun, 21 Dec 2025 18:25:35 +0300 Subject: [PATCH 10/17] =?UTF-8?q?=D0=9F=D0=BE=D0=BC=D0=B5=D0=BD=D1=8F?= =?UTF-8?q?=D0=BB=20=D1=83=D1=81=D0=BB=D0=BE=D0=B2=D0=B8=D0=B5=20=D0=B2?= =?UTF-8?q?=D1=8B=D0=B7=D0=BE=D0=B2=D0=B0=20=D1=82=D0=B5=D1=81=D1=82=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index 299d0ca..9e1fa1b 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -49,7 +49,7 @@ bool test() int main(int argc, char** argv) { - if (argv[0] == "--test") { + if (argc == 2 && strcmp(argv[1], "--test") == 0) { if (!test()) { printf("Test failed\n"); return 1; From 925d37bb1491ab987b85d9cf26a6d7791dfe3aca Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:23:47 +0300 Subject: [PATCH 11/17] =?UTF-8?q?=D0=A3=D0=B4=D0=B0=D0=BB=D0=B8=D0=BB=20?= =?UTF-8?q?=D0=BF=D0=B0=D0=BF=D0=BA=D1=83=20sortList?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sortList/sortList.c | 104 -------------------------------------------- sortList/sortList.h | 10 ----- 2 files changed, 114 deletions(-) delete mode 100644 sortList/sortList.c delete mode 100644 sortList/sortList.h diff --git a/sortList/sortList.c b/sortList/sortList.c deleted file mode 100644 index 82f73bc..0000000 --- a/sortList/sortList.c +++ /dev/null @@ -1,104 +0,0 @@ -#include "sortList.h" -#include -#include - -// элемент списка -typedef struct ListNode { - // значение - int value; - // ссылка на следующую "ячейку" - struct ListNode* next; -} ListNode; - -typedef struct List { - ListNode* head; -} List; - -List* newList() -{ - List* list = (List*)malloc(sizeof(List)); - list->head = NULL; - return list; -} - -// положить элемент в соответствии с сортировкой -void insert(List* list, int value) -{ - ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); - newNode->value = value; - newNode->next = NULL; - - // Если список пуст или новый элемент меньше головы - if (list->head == NULL || value < list->head->value) { - newNode->next = list->head; - list->head = newNode; - return; - } - - // поиск того, куда вставить новый элемент - ListNode* current = list->head; - while (current->next != NULL && current->next->value < value) { - current = current->next; - } - - // вставка - newNode->next = current->next; - current->next = newNode; -} - -// проверка на возможность удаления элемента -bool deleteNode(List* list, int value) -{ - // если список пустой - if (list->head == NULL) { - return false; - } - - // если элемент это голова - if (list->head->value == value) { - ListNode* temprery = list->head; - list->head = list->head->next; - free(temprery); - return true; - } - - // поиск элемента для удаления - ListNode* current = list->head; - while (current->next != NULL && current->next->value != value) { - current = current->next; - } - - // Если элемент не найден - if (current->next == NULL) { - return false; - } - - // удаление элемента - ListNode* temprery = current->next; - current->next = current->next->next; - free(temprery); - return true; -} - -// вывод списка -void printList(List* list) -{ - ListNode* current = list->head; - while (current != NULL) { - printf("%d ", current->value); - current = current->next; - } - printf("\n"); -} - -// удаление списка -void deleteList(List* list) -{ - ListNode* current = list->head; - while (current != NULL) { - ListNode* temprery = current; - current = current->next; - free(temprery); - } - list->head = NULL; -} \ No newline at end of file diff --git a/sortList/sortList.h b/sortList/sortList.h deleted file mode 100644 index b94db67..0000000 --- a/sortList/sortList.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once -#include - -typedef struct List List; - -List* newList(); -void insert(List* list, int value); -bool deleteNode(List* list, int value); -void printList(List* list); -void deleteList(List* list); \ No newline at end of file From da0532147413c1f657202fc33defa0acbc11444c Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:33:42 +0300 Subject: [PATCH 12/17] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87=D0=B5=D1=82=D1=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/CMakeLists.txt | 9 +--- hw.sortList/main.c | 27 ++++------ hw.sortList/sortList.c | 104 +++++++++++++++++++++++++++++++++++++ hw.sortList/sortList.h | 10 ++++ 4 files changed, 125 insertions(+), 25 deletions(-) create mode 100644 hw.sortList/sortList.c create mode 100644 hw.sortList/sortList.h diff --git a/hw.sortList/CMakeLists.txt b/hw.sortList/CMakeLists.txt index 267037d..a7bc2df 100644 --- a/hw.sortList/CMakeLists.txt +++ b/hw.sortList/CMakeLists.txt @@ -5,15 +5,10 @@ set(CMAKE_C_STANDARD 11) set(CMAKE_C_STANDARD_REQUIRED ON) # Создаём библиотеку из файла в поддиректории -add_library(sortList sortList/sortList.c) +add_library(sortList sortList.c) # Создаём исполняемый файл из файла в другой поддиректории -add_executable(main hw.sortList/main.c) +add_executable(main main.c) # Линкуем библиотеку target_link_libraries(main PRIVATE sortList) - -# Добавляем путь к заголовочным файлам библиотеки -target_include_directories(main PRIVATE - ${CMAKE_SOURCE_DIR}/sortList -) \ No newline at end of file diff --git a/hw.sortList/main.c b/hw.sortList/main.c index 9e1fa1b..267e8eb 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -1,7 +1,8 @@ -#include "../sortList/sortList.h" +#include "sortList.h" #include #include #include +#include bool testDeleteEmptyNode() { @@ -34,16 +35,7 @@ bool testDeleteList() bool test() { - if (testDeleteEmptyList()) { - if (testDeleteEmptyNode()) { - if (testDeleteList()) { - if (testDeleteNode()) { - return true; - } - } - } - } - return false; + return (testDeleteEmptyList() && testDeleteEmptyNode() && testDeleteList() && testDeleteNode()); } int main(int argc, char** argv) @@ -62,10 +54,11 @@ int main(int argc, char** argv) List* list = newList(); int value = 0; - printf("Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "); - int operation = 0; - scanf("%d", &operation); - while (operation != 0) { + const char helpMassage = "Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "; + do { + printf("%s", helpMassage); + int operation = 0; + scanf("%d", &operation); if (operation == 1) { printf("Ведите, какое значение вставить: "); scanf("%d", &value); @@ -83,9 +76,7 @@ int main(int argc, char** argv) } else { printf("Такой операции нет\n"); } - printf("Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "); - scanf("%d", &operation); - } + } while (operation != 0); printf("Вы вышли\n"); deleteList(list); return 0; diff --git a/hw.sortList/sortList.c b/hw.sortList/sortList.c new file mode 100644 index 0000000..82f73bc --- /dev/null +++ b/hw.sortList/sortList.c @@ -0,0 +1,104 @@ +#include "sortList.h" +#include +#include + +// элемент списка +typedef struct ListNode { + // значение + int value; + // ссылка на следующую "ячейку" + struct ListNode* next; +} ListNode; + +typedef struct List { + ListNode* head; +} List; + +List* newList() +{ + List* list = (List*)malloc(sizeof(List)); + list->head = NULL; + return list; +} + +// положить элемент в соответствии с сортировкой +void insert(List* list, int value) +{ + ListNode* newNode = (ListNode*)malloc(sizeof(ListNode)); + newNode->value = value; + newNode->next = NULL; + + // Если список пуст или новый элемент меньше головы + if (list->head == NULL || value < list->head->value) { + newNode->next = list->head; + list->head = newNode; + return; + } + + // поиск того, куда вставить новый элемент + ListNode* current = list->head; + while (current->next != NULL && current->next->value < value) { + current = current->next; + } + + // вставка + newNode->next = current->next; + current->next = newNode; +} + +// проверка на возможность удаления элемента +bool deleteNode(List* list, int value) +{ + // если список пустой + if (list->head == NULL) { + return false; + } + + // если элемент это голова + if (list->head->value == value) { + ListNode* temprery = list->head; + list->head = list->head->next; + free(temprery); + return true; + } + + // поиск элемента для удаления + ListNode* current = list->head; + while (current->next != NULL && current->next->value != value) { + current = current->next; + } + + // Если элемент не найден + if (current->next == NULL) { + return false; + } + + // удаление элемента + ListNode* temprery = current->next; + current->next = current->next->next; + free(temprery); + return true; +} + +// вывод списка +void printList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + printf("%d ", current->value); + current = current->next; + } + printf("\n"); +} + +// удаление списка +void deleteList(List* list) +{ + ListNode* current = list->head; + while (current != NULL) { + ListNode* temprery = current; + current = current->next; + free(temprery); + } + list->head = NULL; +} \ No newline at end of file diff --git a/hw.sortList/sortList.h b/hw.sortList/sortList.h new file mode 100644 index 0000000..b94db67 --- /dev/null +++ b/hw.sortList/sortList.h @@ -0,0 +1,10 @@ +#pragma once +#include + +typedef struct List List; + +List* newList(); +void insert(List* list, int value); +bool deleteNode(List* list, int value); +void printList(List* list); +void deleteList(List* list); \ No newline at end of file From a1966e27b41cec6de1802a6bbb5125e212220169 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:43:43 +0300 Subject: [PATCH 13/17] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=B8=D0=BD=D0=B8=D1=86=D0=B8=D0=B0=D0=BB=D0=B8?= =?UTF-8?q?=D0=B7=D0=B0=D1=86=D0=B8=D1=8E=20=D1=81=D0=BF=D0=B8=D1=81=D0=BA?= =?UTF-8?q?=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index 267e8eb..63aca94 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -6,27 +6,27 @@ bool testDeleteEmptyNode() { - List list = newList(); + List* list = newList(); return !deleteNode(list, 123313); } bool testDeleteNode() { - List list = newList(); + List* list = newList(); inert(list, 5); return deleteNode(list, 5); } bool testDeleteEmptyList() { - List list = newList(); + List* list = newList(); deleteList(list); return list == NULL; } bool testDeleteList() { - List list = newList(); + List* list = newList(); insert(list, 5); insert(list, 4); deleteList(list); From 137037ca9c631528e51360662d39d3b2e4c39312 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 14:57:29 +0300 Subject: [PATCH 14/17] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BD=D0=B5=D0=B4=D0=BE=D1=87=D0=B5=D1=82=D1=8B?= =?UTF-8?q?=20=D1=81=D0=BD=D0=BE=D0=B2=D0=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index 63aca94..b88d629 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -13,7 +13,7 @@ bool testDeleteEmptyNode() bool testDeleteNode() { List* list = newList(); - inert(list, 5); + insert(list, 5); return deleteNode(list, 5); } @@ -54,7 +54,8 @@ int main(int argc, char** argv) List* list = newList(); int value = 0; - const char helpMassage = "Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "; + const char* helpMassage = "Ведите номер операции: 0 - выйти, 1 - добавить значение, 2 - удалить значение, 3 - распечатать список: "; + int operation = 0; do { printf("%s", helpMassage); int operation = 0; From af978878a4ab9c5348994b0121837ba73d6c2fc7 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 15:28:12 +0300 Subject: [PATCH 15/17] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8?= =?UTF-8?q?=D0=BB=20=D1=84=D1=83=D0=BD=D0=BA=D1=86=D0=B8=D1=8E=20=D1=81?= =?UTF-8?q?=D1=80=D0=B0=D0=B2=D0=BD=D0=B5=D0=BD=D0=B8=D1=8F=20=D1=81=20?= =?UTF-8?q?=D0=BC=D0=B0=D1=81=D1=81=D0=B8=D0=B2=D0=BE=D0=BC=20=D0=B8=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D1=83=20=D0=BD=D0=B0?= =?UTF-8?q?=20=D0=BF=D1=83=D1=81=D1=82=D0=BE=D1=82=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 22 ++++++++++++---------- hw.sortList/sortList.c | 28 +++++++++++++++++++++++++++- hw.sortList/sortList.h | 4 +++- 3 files changed, 42 insertions(+), 12 deletions(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index b88d629..c501e86 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -17,25 +17,27 @@ bool testDeleteNode() return deleteNode(list, 5); } -bool testDeleteEmptyList() -{ +bool testSorted1(){ List* list = newList(); - deleteList(list); - return list == NULL; + insert(list, 5); + insert(list, 6); + insert(list, -1111); + int array = {-1111, 5, 6}; + return equalToArray(list, array, 3); } -bool testDeleteList() -{ +bool testSorted2(){ List* list = newList(); insert(list, 5); - insert(list, 4); - deleteList(list); - return list == NULL; + insert(list, 6); + insert(list, -1111); + int array = {-1111, 5}; + return !equalToArray(list, array, 3); } bool test() { - return (testDeleteEmptyList() && testDeleteEmptyNode() && testDeleteList() && testDeleteNode()); + return (testSorted1() && testDeleteEmptyNode() && testSorted2()) && testDeleteNode()); } int main(int argc, char** argv) diff --git a/hw.sortList/sortList.c b/hw.sortList/sortList.c index 82f73bc..74069e9 100644 --- a/hw.sortList/sortList.c +++ b/hw.sortList/sortList.c @@ -12,12 +12,14 @@ typedef struct ListNode { typedef struct List { ListNode* head; + int size; } List; List* newList() { List* list = (List*)malloc(sizeof(List)); list->head = NULL; + list->size++; return list; } @@ -32,6 +34,7 @@ void insert(List* list, int value) if (list->head == NULL || value < list->head->value) { newNode->next = list->head; list->head = newNode; + list->size++; return; } @@ -44,6 +47,7 @@ void insert(List* list, int value) // вставка newNode->next = current->next; current->next = newNode; + list->size++; } // проверка на возможность удаления элемента @@ -59,6 +63,7 @@ bool deleteNode(List* list, int value) ListNode* temprery = list->head; list->head = list->head->next; free(temprery); + list->size--; return true; } @@ -77,6 +82,7 @@ bool deleteNode(List* list, int value) ListNode* temprery = current->next; current->next = current->next->next; free(temprery); + list->size--; return true; } @@ -91,6 +97,10 @@ void printList(List* list) printf("\n"); } +bool isEmpty(List* list){ + return list->head == NULL; +} + // удаление списка void deleteList(List* list) { @@ -100,5 +110,21 @@ void deleteList(List* list) current = current->next; free(temprery); } - list->head = NULL; + free(list); +} + +bool equalToArray(List* list, int* array, int arrayLength){ + ListNode* current = list->head; + int i = 0; + if (list->size != arrayLength){ + return false; + } + + while (i < arrayLength) { + if (current-> value != array[i]){ + return false; + } + current = current->next; + } + return true; } \ No newline at end of file diff --git a/hw.sortList/sortList.h b/hw.sortList/sortList.h index b94db67..8086f76 100644 --- a/hw.sortList/sortList.h +++ b/hw.sortList/sortList.h @@ -7,4 +7,6 @@ List* newList(); void insert(List* list, int value); bool deleteNode(List* list, int value); void printList(List* list); -void deleteList(List* list); \ No newline at end of file +void deleteList(List* list); +bool isEmpty(List* list); +bool equalToArray(List* list, int* array, int arrayLength); \ No newline at end of file From 31d074abbabd60d7fcd11a38c394e143fc2d4df4 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 15:30:55 +0300 Subject: [PATCH 16/17] =?UTF-8?q?=D0=A3=D0=B1=D1=80=D0=B0=D0=BB=20=D0=BB?= =?UTF-8?q?=D0=B8=D1=88=D0=BD=D1=8E=D1=8E=20=D1=81=D0=BA=D0=BE=D0=B1=D0=BE?= =?UTF-8?q?=D1=87=D0=BA=D1=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index c501e86..c8390d0 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -22,7 +22,7 @@ bool testSorted1(){ insert(list, 5); insert(list, 6); insert(list, -1111); - int array = {-1111, 5, 6}; + int array[] = {-1111, 5, 6}; return equalToArray(list, array, 3); } @@ -31,13 +31,13 @@ bool testSorted2(){ insert(list, 5); insert(list, 6); insert(list, -1111); - int array = {-1111, 5}; + int array[] = {-1111, 5}; return !equalToArray(list, array, 3); } bool test() { - return (testSorted1() && testDeleteEmptyNode() && testSorted2()) && testDeleteNode()); + return (testSorted1() && testDeleteEmptyNode() && testSorted2() && testDeleteNode()); } int main(int argc, char** argv) From b2bb421c13ad4808fb9f0e24558ec5938804fda4 Mon Sep 17 00:00:00 2001 From: Andrew-Kochanov Date: Mon, 22 Dec 2025 15:43:55 +0300 Subject: [PATCH 17/17] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D1=88=D0=B8=D0=B1=D0=BA=D1=83=20=D0=B2=20?= =?UTF-8?q?=D1=82=D0=B5=D1=81=D1=82=D0=B0=D1=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- hw.sortList/main.c | 2 +- hw.sortList/sortList.c | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/hw.sortList/main.c b/hw.sortList/main.c index c8390d0..eba9b1f 100644 --- a/hw.sortList/main.c +++ b/hw.sortList/main.c @@ -32,7 +32,7 @@ bool testSorted2(){ insert(list, 6); insert(list, -1111); int array[] = {-1111, 5}; - return !equalToArray(list, array, 3); + return !equalToArray(list, array, 2); } bool test() diff --git a/hw.sortList/sortList.c b/hw.sortList/sortList.c index 74069e9..1c8f785 100644 --- a/hw.sortList/sortList.c +++ b/hw.sortList/sortList.c @@ -19,7 +19,7 @@ List* newList() { List* list = (List*)malloc(sizeof(List)); list->head = NULL; - list->size++; + list->size = 0; return list; } @@ -119,12 +119,13 @@ bool equalToArray(List* list, int* array, int arrayLength){ if (list->size != arrayLength){ return false; } - + while (i < arrayLength) { if (current-> value != array[i]){ return false; } current = current->next; + i++; } return true; } \ No newline at end of file