Регистрация | Вход
#include <stdlib.h>#include <stdio.h>typedef struct{ int *data; int curent; int length;} vector;vector makevector(int size){ vector vector; vector.data = malloc(size * sizeof(int)); vector.curent = 0; vector.length = size; return vector;}void add2vector(vector* vector, int value){ if (vector->curent == vector->length - 1) { vector->length *= 2; vector->data = realloc(vector->data, vector->length * sizeof(int)); } vector->data[vector->curent] = value; vector->curent++;}void printvector(vector* v){ for (int i = 0; i < v->curent; ++i) { printf("%d\n", v->data[i]); }}int main(){ vector v = makevector(2); for (int i = 0; i < 33; ++i) add2vector(&v, i*i); printvector(&v); getchar();}
#include <stdio.h>#include <stdlib.h>int* BinSerarch(int* start, int* end, int val){ int* mid = start + (end - start) / 2; if (val == *mid) return mid; else { if (val > *mid) return BinSerarch(mid, end, val); else return BinSerarch(start, mid, val); }}
#include <stdlib.h>#include <stdio.h>typedef struct{ struct listnode1* next; int data;} listnode1;typedef struct{ listnode1* curent; listnode1* first;} list1;list1 makelist(){ list1 list = { 0 }; return list;}void add2list1(list1* list, int value){ listnode1* newItem = malloc(sizeof(listnode1)); newItem->data = value; newItem->next = 0; if (list->curent) list->curent->next = newItem; else list->first = newItem; list->curent = newItem;}void printlist1(list1* list){ listnode1* curent = list->first; while (curent) { printf("%d\n", curent->data); curent = curent->next; }}void main(){ list1 list = makelist(); for (int i = 0; i < 10; ++i) add2list1(&list, i); printlist1(&list); getchar();}
#include <stdlib.h>#include <stdio.h>typedef struct{ struct listnode2* next; struct listnode2* prev; int data;} listnode2;typedef struct{ listnode2* curent; listnode2* first;} list2;list2 makelist2(){ list2 list = { 0 }; return list;}void add2list2(list2* list, int value){ listnode2* newItem = malloc(sizeof(listnode2)); newItem->data = value; newItem->next = 0; newItem->prev = 0; if (list->curent) { list->curent->next = newItem; newItem->prev = list->curent; } else list->first = newItem; list->curent = newItem;}void printlist2(list2* list){ listnode2* curent = list->first; while (curent) { printf("%d\n", curent->data); curent = curent->next; }}void printlist2reverce(list2* list){ listnode2* curent = list->curent; while (curent) { printf("%d\n", curent->data); curent = curent->prev; }}void main(){ list2 list = makelist2(); for (int i = 0; i < 10; ++i) add2list2(&list, i); printlist2(&list); printf("\n"); printlist2reverce(&list); getchar();}
void insertAftert(list2* list, int value1, int value2){ listnode2* curent = list->first; while (curent) { if(curent->data==value1) { listnode2* newItem = malloc(sizeof(listnode2)); newItem->data = value2; newItem->prev = curent; newItem->next = curent->next; curent->next->prev = newItem; curent->next = newItem; return; } curent = curent->next; }}
#include <stdlib.h>#include <stdio.h>typedef struct mylist{ int data; struct mylist* next;} mylist;mylist* getlast(mylist* list){ while (list) { if (list->next == NULL) return list; list = list->next; } return NULL;}void addtomylist(mylist* last, int val){ mylist* next = malloc(sizeof(mylist)); next->data = val; next->next = NULL; last = getlast(last); last->next = next;}void main(){ mylist list = {0}; for (int i = 1; i < 10; ++i) addtomylist(&list, i*i); mylist* curent = &list; while (curent) { printf("%d\n", curent->data); curent = curent->next; }}
#include <stdlib.h>#include <stdio.h>#include <string.h>struct treenode{ struct treenode* left; struct treenode* right; long key; void* value;};typedef struct treenode treenode;treenode* newtreenode(long key, void* value, int size){ treenode* newItem = malloc(sizeof(treenode)); newItem->key = key; newItem->left = 0; newItem->right = 0; newItem->value = malloc(size); memcpy(newItem->value, value, size); return newItem;}void insert2map(treenode* tree, treenode* newItem){ if (newItem->key < tree->key) { if (tree->left) insert2map(tree->left, newItem); else tree->left = newItem; } else if (newItem->key > tree->key) { if (tree->right) insert2map(tree->right, newItem); else tree->right = newItem; }}void* getitem(treenode* tree, long key){ if(tree) { if (tree->key == key) return tree->value; else if (tree->key > key) return getitem(tree->left, key); else return getitem(tree->right, key); } else return NULL;}void print(treenode* tree){ if (tree->left) print(tree->left); printf("%s\n", (char*)(tree->value)); if (tree->right) print(tree->right);}void main(){ treenode* tree = newtreenode(0, "0", 1); for (int i = 0; i < 10; ++i) { int r = rand() % 100; char bufer[10]; _itoa_s(r, bufer, 10, 10); insert2map(tree, newtreenode(r, bufer, 10)); } print(tree); getchar();}
void insert2map(treenode* tree, treenode* newItem){ if (newItem->key < tree->key) { if (tree->left) insert2map(tree->left, newItem); else tree->left = newItem; } else if (newItem->key > tree->key) { if (tree->right) insert2map(tree->right, newItem); else tree->right = newItem; }}void* getitem(treenode* tree, long key){ if(tree) { if (tree->key == key) return tree->value; else if (tree->key > key) return getitem(tree->left, key); else return getitem(tree->right, key); } else return NULL;}