diff --git a/Homework/DZf28.03/app b/Homework/DZf28.03/app new file mode 100755 index 0000000..8199d00 Binary files /dev/null and b/Homework/DZf28.03/app differ diff --git a/Homework/DZf28.03/fmain.c b/Homework/DZf28.03/fmain.c index 912e441..34c8127 100644 --- a/Homework/DZf28.03/fmain.c +++ b/Homework/DZf28.03/fmain.c @@ -8,7 +8,7 @@ int main() if (professions1 == NULL || professions2 == NULL) { - printf("Mesta net\n"); + printf("Mesta net\n"); exit(1); } @@ -59,8 +59,6 @@ int main() st_fscanf(professions3, line_number, "professions.txt"); sort_sel(professions3, line_number); - Sleep(50000); - printf("\nTTretiy massiv is:\n"); print_struc(professions3, line_number); free(professions1); diff --git a/Homework/DZf28.03/funcHeader.h b/Homework/DZf28.03/funcHeader.h index 0f91abe..7950eb7 100644 --- a/Homework/DZf28.03/funcHeader.h +++ b/Homework/DZf28.03/funcHeader.h @@ -5,7 +5,6 @@ #include #include #include -#include typedef struct People { diff --git a/Homework/DZf28.03/professions.txt b/Homework/DZf28.03/professions.txt index 2f93d52..361ec67 100644 --- a/Homework/DZf28.03/professions.txt +++ b/Homework/DZf28.03/professions.txt @@ -1,8 +1,8 @@ -1 pkaeoew -1 ujqrkpqP -2 nllvevc= -2 wrqqkwf( -1 krxtlgme -1 srgyisre -3 tiflqbd( -3 opukfbci +1 fkmigss +3 btuawlx +3 kakvuam +3 roiiaox +1 kufhggv +2 qaasoax +3 rummwyo +3 qkvwdqj diff --git a/Homework/Trees/app b/Homework/Trees/app index 0a84233..1e04fb2 100755 Binary files a/Homework/Trees/app and b/Homework/Trees/app differ diff --git a/Homework/Trees/appT b/Homework/Trees/appT deleted file mode 100755 index 3c13e73..0000000 Binary files a/Homework/Trees/appT and /dev/null differ diff --git a/Homework/Trees/appTree b/Homework/Trees/appTree deleted file mode 100755 index 144063f..0000000 Binary files a/Homework/Trees/appTree and /dev/null differ diff --git a/Homework/Trees/func.c b/Homework/Trees/func.c index 7946aa3..4fbf7a8 100644 --- a/Homework/Trees/func.c +++ b/Homework/Trees/func.c @@ -2,12 +2,12 @@ #include #include "head.h" -tree *init_root(tree *root, int field) +tree *init_root(tree *root, int field) { tree *tmp = malloc(sizeof(tree)); // Выделение памяти под корень дерева - tmp->field = field; // Присваивание значения ключу - tmp->parent = NULL; // Присваивание указателю на родителя значения NULL - tmp->left = tmp->right = NULL; // Присваивание указателю на левое и правое поддерево значения NULL + tmp->field = field; // Присваивание значения ключу + tmp->parent = NULL; // Присваивание указателю на родителя значения NULL + tmp->left = tmp->right = NULL; // Присваивание указателю на левое и правое поддерево значения NULL root = tmp; return root; } @@ -79,46 +79,55 @@ tree *findForDel(tree *root) tree *del_node(tree *root, int field) { - printf("%d\n", root->field); + if (root == NULL) + return NULL; + + // Поиск удаляемого узла по ключу tree *rig = root, *lef = NULL, *tmp = NULL; - // preorder(root); - printf("test"); lef = find_node(root, field); // 1 случай: у узла нет потомков if ((lef->left == NULL) && (lef->right == NULL)) { - tmp = lef->parent; - if (lef == tmp->right) - tmp->right = NULL; + printf("no children\n"); + if (lef == lef->parent->right) + lef->parent->right = NULL; else - tmp->left = NULL; + lef->parent->left = NULL; free(lef); + return root; } // 2 случай: потомок один - поддерево справа if ((lef->left == NULL) && (lef->right != NULL)) { tmp = lef->parent; + printf("left\n"); if (lef == tmp->right) + { tmp->right = lef->right; + } else tmp->left = lef->right; free(lef); + return tmp; } // 2 случай: потомок один - поддерево слева if ((lef->left != NULL) && (lef->right == NULL)) { + printf("right\n"); tmp = lef->parent; if (lef == tmp->right) tmp->right = lef->left; else tmp->left = lef->left; free(lef); + return tmp; } // 3 случай: оба потомка if ((lef->left != NULL) && (lef->right != NULL)) { + printf("both\n"); tmp = findForDel(lef); lef->field = tmp->field; if (tmp->right == NULL) @@ -135,7 +144,7 @@ void preorder(tree *root) if (root == NULL) return; if (root->field) - printf("%d ", root->field); + printf("%d\n", root->field); preorder(root->left); preorder(root->right); } diff --git a/Homework/Trees/main.c b/Homework/Trees/main.c index aa24cbc..2214779 100644 --- a/Homework/Trees/main.c +++ b/Homework/Trees/main.c @@ -7,8 +7,14 @@ int main(int argc, char *argv[]) { tree *root = NULL; root = init_root(root, 'A'); - // preorder(root); + preorder(root); + + root = add_node(root, 'r'); + preorder(root); + root = del_node(root, 'A'); + preorder(root); + exit(0); // preorder(root); printf("\n"); diff --git a/other/Vova/2_in_1.c b/other/Vova/2_in_1.c index 48bd84d..87b850f 100644 --- a/other/Vova/2_in_1.c +++ b/other/Vova/2_in_1.c @@ -6,22 +6,30 @@ #define N 3 #define LENG 3 -typedef struct Node { - struct Node* next; - struct Node* pr; - char name[LENG]; +typedef struct Node +{ + struct Node *next; + struct Node *pr; + char name[LENG]; } Node; -void node_print(Node *n) { - while (n != NULL) { +void node_print(Node *n) +{ + while (n != NULL) + { printf("%s\n", n->name); n = n->next; } } -Node *add_tail(Node *n, char s[]) { - if (n == NULL) { - if ((n = malloc(sizeof(Node))) == NULL) { +Node *add_tail(Node *n, char s[]) +{ + Node *res = n; + Node *tmp = malloc(sizeof(Node)); + if (n == NULL) + { + if ((n = malloc(sizeof(Node))) == NULL) + { printf("Deny malloc\n"); exit(1); } @@ -30,73 +38,86 @@ Node *add_tail(Node *n, char s[]) { memcpy(n->name, s, LENG); return n; } - if (!strcmp(n->name, "\0")) { + if (!strcmp(n->name, "\0")) + { memcpy(n->name, s, LENG); n->next = NULL; n->pr = NULL; return n; } - Node *res = n; while (n->next != NULL) n = n->next; - Node *tmp = malloc(sizeof(Node)); memcpy(tmp->name, s, LENG); tmp->pr = n; n->next = tmp; return res; } -Node get(Node *node, int n) { +Node get(Node *node, int n) +{ int i; - for (i = 0; i < n; i++) { + for (i = 0; i < n; i++) + { node = node->next; } return *node; } -int len(Node *n) { +int len(Node *n) +{ int res = 0; - while (n != NULL) { + while (n != NULL) + { res++; n = n->next; } return res; } -Node *find_0(Node *n1, Node *n2) { +Node *find_0(Node *n1, Node *n2) +{ int i, j, f = 0; Node *res = NULL; - if ((res = malloc(sizeof(Node))) == NULL) { + if ((res = malloc(sizeof(Node))) == NULL) + { printf("Deny malloc\n"); exit(3); } - for (i = 0; i < len(n1); i++) { + for (i = 0; i < len(n1); i++) + { Node tmp1 = get(n1, i); - for (j = 0; j < len(n2); j++) { + for (j = 0; j < len(n2); j++) + { Node tmp2 = get(n2, j); - if (strcmp(tmp1.name, tmp2.name) == 0) { + if (strcmp(tmp1.name, tmp2.name) == 0) + { f = 1; } } - if (f == 0) { + if (f == 0) + { Node tmp = get(n1, i); res = add_tail(res, tmp.name); } f = 0; } - for (i = 0; i < len(n2); i++) { + for (i = 0; i < len(n2); i++) + { Node tmp2 = get(n2, i); - for (j = 0; j < len(n1); j++) { + for (j = 0; j < len(n1); j++) + { Node tmp1 = get(n1, j); - if (strcmp(tmp2.name, tmp1.name) == 0) { + if (strcmp(tmp2.name, tmp1.name) == 0) + { f = 1; } } - if (f == 0) { + if (f == 0) + { Node tmp = get(n2, i); res = add_tail(res, tmp.name); } @@ -106,55 +127,58 @@ Node *find_0(Node *n1, Node *n2) { return res; } +int main() +{ + Node *n1 = NULL; + Node *n2 = NULL; + Node *n3 = NULL; + int i; + printf("Hello. Let's begin\n"); + printf("\n"); + srand(time(0)); -int main(int argc, char* argv[]) { - printf("Hello. Let's begin\n"); - printf("\n"); - srand(time(0)); - Node* n1 = NULL; - Node* n2 = NULL; - Node* n3 = NULL; - if ((n1 = malloc(sizeof(Node))) == NULL || - (n2 = malloc(sizeof(Node))) == NULL || - (n3 = malloc(sizeof(Node))) == NULL) { - printf("Deny malloc\n"); - exit(2); - } + if ((n1 = malloc(sizeof(Node))) == NULL || + (n2 = malloc(sizeof(Node))) == NULL || + (n3 = malloc(sizeof(Node))) == NULL) + { + printf("Deny malloc\n"); + exit(2); + } - int i; - for (i = 0; i < N; i++) { - char s[LENG]; - int j; + for (i = 0; i < N; i++) + { + char s[LENG]; + int j; - for (j = 0; j < LENG - 1; j++) - s[j] = 'a' + rand() % 2; - s[LENG - 1] = '\0'; + for (j = 0; j < LENG - 1; j++) + s[j] = 'a' + rand() % 2; + s[LENG - 1] = '\0'; - n1 = add_tail(n1, s); + n1 = add_tail(n1, s); - for (j = 0; j < LENG - 1; j++) - s[j]= 'a' + rand() % 2; - s[LENG - 1] = '\0'; - n2 = add_tail(n2, s); - } + for (j = 0; j < LENG - 1; j++) + s[j] = 'a' + rand() % 2; + s[LENG - 1] = '\0'; + n2 = add_tail(n2, s); + } - printf("Initial arrays:\n"); - node_print(n1); - printf("\n"); - node_print(n2); + printf("Initial arrays:\n"); + node_print(n1); + printf("\n"); + node_print(n2); - n3 = find_0(n1, n2); + n3 = find_0(n1, n2); - printf("\n"); - printf("Final array:\n"); - node_print(n3); + printf("\n"); + printf("Final array:\n"); + node_print(n3); - free(n1); - free(n2); - free(n3); - - printf("\n"); - printf("That's all for now\n"); + free(n1); + free(n2); + free(n3); - return 0; + printf("\n"); + printf("That's all for now\n"); + + return 0; } diff --git a/other/Vova/app b/other/Vova/app index a4e631d..ceed043 100755 Binary files a/other/Vova/app and b/other/Vova/app differ