#include #include #define DAYS_IN_MONTH 30 #define MONTHS_IN_YEAR 12 #define ONE_HUNDRED 100 #define ONE_THOSEND 10000 #define BOOLEAN unsigned short #define TRUE 1 #define FALSE 0 #define SEVEN 7 #define EIGHT 8 #define TEN 10 #define TWELVE 12 #define THIRTY 30 #define ZERO 0 #define ONE 1 #define TWO 2 #define THREE 3 #define FOUR 4 #define FIVE 5 #define TAKE_SIGNED_MATH(x) (((2 * (x)) + 1) % 2) #define TAKE_SIGNED(x) ((x) < 0) ? -1 : 1 #define ABS(x) (x) * (((2 * (x)) + 1) % 2) #define MAX(x, y) (x > y) ? x : y #define MIN(x, y) (x < y) ? x : y #define BACKSLASH_ZERO '\0' #define MAX_SIZE_STRING 256 #define MASK_FIRST_BIT 0x1 typedef char string[MAX_SIZE_STRING]; typedef unsigned char byte; typedef unsigned short word; typedef unsigned int dblword; typedef union { int int_; char char_; double double_; void * pointer; } Data_Type; typedef struct { Data_Type * values; unsigned int items; } stack; typedef struct { Data_Type * values; unsigned int items; } queue; struct LLL { Data_Type value; struct LLL * next; }; struct DLLL { Data_Type info; struct DLLL * next; struct DLLL * prev; }; struct CLLL { Data_Type info; struct CLLL * next; }; struct CDLLL { Data_Type info; struct CDLLL * next; struct CDLLL * prev; }; struct SM { Data_Type info; int row; int col; struct SM * col_next; struct SM * row_next; }; struct BinaryTree { Data_Type info; struct BinaryTree * right; struct BinaryTree * left; }; struct ThirdTree { Data_Type info; struct ThirdTree * right; struct ThirdTree * left; struct ThirdTree * middle; }; struct GeneralTree { Data_Type info; struct LLL * manager_general_trees; }; typedef struct SM SM; typedef struct LLL LLL; typedef struct DLLL DLLL; typedef struct CLLL CLLL; typedef struct CDLLL CDLLL; typedef struct BinaryTree BinaryTree; typedef struct ThirdTree ThirdTree; typedef struct GeneralTree GeneralTree; void ChangeYearsToMonths(int *years, short *month); void SwapNumbers(int *ptr_number1, int *ptr_number2); void SwapChars(char *ptr_char1, char *ptr_char2); void ChangeMonthsToDays(short *months, int *days); int Random(int ** seed, int min, int max); void ChangeDateToDays(int *date, int *days); void ChangeDaysToMonths(int *days, int *months); void ChangeMonthsToYears(int *months, int *years); void ChangeDaysToDate(int *days, int *date); int DifferentDates(int *date1, int *date2, int *different); BOOLEAN EvenNumber(int num); int OppositeNumber(int num); int OddDigitsInNumber(int num); int EvenDigitsInNumber(int num); int SumOfNumberWithPositiveDigitsAndNumberWithNegativeDigits(int num); double Power(float num, short pow); int GetRest(double num, unsigned short count_digits); unsigned short CountDigits(int num); float ConvertBaseToDeciaml(float num, float base, unsigned short rest_size); double Sum(double number1, double number2); int SumOfDigitsNumber(double number); int SumEvenDigits(double number); int SumOddDigits(double number); BOOLEAN CommonDigitsInTwoNumbers(double number1, double number2); double Sqrt(double number, short root); BOOLEAN PrimeNumber(int number); double Module(double number, double div); // TODO : FIX IT BOOLEAN DigitInNumber(double number, unsigned short digit); int ConcatenationNumbers(short number1, short number2); int Multiplication(short number1, short multiply); // TODO : FIX IT int GetDenominator(double number); short GetCounter(double number); double Divide(double number, double div); // TODO : FIX IT BOOLEAN SumInArray(int array[], unsigned int size, int sum); BOOLEAN ChangeBool(BOOLEAN bool1); BOOLEAN Equality(int number1, int number2); BOOLEAN NumBBiggerThenNumA(int a, int b); unsigned int SumOfTimesCharsArray1InCharsArray2(char array1[], unsigned int array1_size, char array2[], unsigned int array2_size); unsigned int CreateMask(unsigned short size, unsigned short digit_of_mask); unsigned short CountADigitInNumber(int number, unsigned short digit); short GetDigit(int number, unsigned short location); unsigned short CountOfIdenticalDigitsInSomeIndex(int number1, int number2); unsigned short CountOfIdenticalDigits(int number1, int number2); BOOLEAN ForeignDigits(int number); void PrintMatrix(void * ptr_mat, unsigned short col, unsigned short row, void print(void *)); void CopyChar(char * ch, char * copy); void ResetMatrix(void * ptr_mat, unsigned short col, unsigned short row, void * type, void insert(void *, void *)); BOOLEAN CharInString(char text[], char c); char * LastCharOfString(char * start_string); unsigned int StringLength(char * str); BOOLEAN StringCompare(char *start_stringA_index, char *start_stringB_index); char * IndexCharInPointers(char *start_pointer, char *end_pointer , char c); unsigned short CountCharInString(char *start_string_index, char *c); void CutString(char *start_textA_index, char *end_textA_index, char *start_textB_index); void CopyString(char *start_string_index, char *start_copy_index); void LinkingString(char *start_stringA_index, char *start_stringB_index); void ReverseString(char textA[]); BOOLEAN StringBInStringA(char *start_string_a, char *start_string_b); char * IndexStringBInStringA(char *start_string_a, char *start_string_b); unsigned int CountStringBInStringA(char *start_string_a, char *start_string_b); void RemoveStringBFromStringA(char *start_string_a, char *start_string_b); void RemoveAllStringBFromStringA(char *start_stringA_index, char *start_stringB_index); BOOLEAN ValidParenthesesTemplate(char text[]); unsigned short CharToNumber(char *c); unsigned int MaxCountCharInString(char *start_string_index); void CopyPointers(char *start_string_index, char *start_copy_index, char *end_copy_index); BOOLEAN EvenBits(byte b); unsigned short CountBits(byte b); void Multiply(float *ptr_number1, float *ptr_number2, double *ptr_result); // -------------------------------------- Stack ----------------------------------------- void InitStack(stack * sk); BOOLEAN IsEmptyStack(stack * sk); void PushStack(stack * sk , Data_Type item); Data_Type PopStack(stack * sk); void EmptyStack(stack * sk); void CopyStack(stack * sk, stack * copy); void OppositeStack(stack * sk); BOOLEAN IsEqualsStack(stack * sk1, stack * sk2); unsigned int ItemsStack(stack * sk); int SumStack(stack * sk); BOOLEAN FindNumberInStack(stack * sk, Data_Type item); void UnionStack(stack * sk1, stack * sk2); // -------------------------------------- Queue ----------------------------------------- void InitQueue(queue * q); void InsertQueue(queue * q, Data_Type item); Data_Type RemoveQueue(queue * q); BOOLEAN IsEmptyQueue(queue * q); // -------------------------------------- LLL ------------------------------------------- void InsertAfterLLL(LLL * manager); void PushLLL(LLL ** manager); void PopLLL(LLL ** manager); void DeleteLLL(LLL * manager); LLL * GetLoactionLLL(LLL ** manager, unsigned short location); // -------------------------------------- DLLL ------------------------------------------ void InitDLLL(DLLL ** manager); void PushDLLL(DLLL ** manager); void InsertAfterDLLL(DLLL * ptr_before); void InsertBeforeDLLL(DLLL * ptr_after); void PopDLLL(DLLL ** manager); void DeleteDLLL(DLLL * ptr_cur); void PrintDLLL(DLLL * manager, void Print(Data_Type dt)); // --------------------------------- CLLL ----------------------------------------------- void InsertLastCLLL(CLLL ** manager); void InsertAfterCLLL(CLLL * ptr_before); void InsertEndCLLL(CLLL ** manager); void DeleteLastCLLL(CLLL ** manager); void DeleteAfterCLLL(CLLL * ptr_before); void DeleteEndCLLL(CLLL ** manager); // --------------------------------- CDLLL ---------------------------------------------- void InsertLastCDLLL(CDLLL ** manager); void InsertAfterCDLLL(CDLLL * ptr_before); void InsertBeforeCDLLL(CDLLL * ptr_after); void InsertEndCDLLL(CDLLL ** manager); void DeleteCDLLL(CDLLL * ptr_cur); void DeleteLastCDLLL(CDLLL ** manager); void PrintCDLLL(CDLLL * manager, void Print(Data_Type dt)); // ---------------------------- Sparce Matrix ------------------------------------------- void InitSM(SM ** manager); void AddRowSM(SM * manager); void AddColSM(SM * manager); SM * GetItemSM(SM * manager, int row, int col); SM * FindAbove(SM * ptr_sm); SM * FindBefore(SM * ptr_sm); unsigned int RowsCountSM(SM * manager); unsigned short ColsCountSM(SM * manager); void AddItemSM(SM * manager, int row, int col); void RemoveItemSM(SM * manager, int row, int col); void RemoveColSM(SM * manager); void RemoveRowSM(SM * manager); void PrintIntDataType(Data_Type dt); void PrintSM(SM * manager, void print(Data_Type)); // -------------------------------------- Binary Tree ----------------------------------- void MakeBinaryTree(BinaryTree ** tree); void AddLeftAfterBinaryTree(BinaryTree * tree); void AddRightAfterBinaryTree(BinaryTree * tree); BOOLEAN IsLeafBinaryTree(BinaryTree * tree); // -------------------------------------- Third Tree ----------------------------------- void MakeThirdTree(ThirdTree ** tree); void AddLeftAfterThirdTree(ThirdTree * tree); void AddRightAfterThirdTree(ThirdTree * tree); void AddMiddleAfterThirdTree(ThirdTree * tree); BOOLEAN IsLeafThirdTree(ThirdTree * tree); // -------------------------------------- General Tree ----------------------------------- void MakeGeneralTree(GeneralTree ** tree); void AddAfterGeneralTree(GeneralTree * tree); BOOLEAN IsLeafGeneralTree(GeneralTree * tree); // -------------------------------------- Funcations Tree ----------------------------------- void PreodererPrintBinaryTree(BinaryTree * root, void print(Data_Type)); void PosorderPrintBinaryTree(BinaryTree * root, void print(Data_Type)); void InorderPrintBinaryTree(BinaryTree * root, void print(Data_Type)); void LevelPrintBinaryTree(BinaryTree * root, void print(Data_Type));