diff --git a/LibAutomaton/CellElement.c b/LibAutomaton/CellElement.c index 70adfa1..1c974ad 100644 --- a/LibAutomaton/CellElement.c +++ b/LibAutomaton/CellElement.c @@ -23,6 +23,14 @@ cellElement * CreateCellElem(){ return elem; } +bool is_leaf(cellElement* tree){ + if (tree->nextCol == NULL && tree->nextRow == NULL){ + return true; + } else { + return false; + } +} + int AddNextCol(cellElement* tree){ cellElement * elem = NULL; @@ -60,7 +68,7 @@ int AddNextRow(cellElement* tree){ elem->value = true; elem->nextRow = NULL; - elem->nextRow = NULL; + elem->nextCol = NULL; if (tree->nextRow == NULL){ tree->nextRow = elem; }else{ @@ -73,9 +81,7 @@ void removeNextCol(cellElement* tree){ printf("---removeNextCol---\n"); if (tree->nextCol != NULL){ - cellElement * elem = tree->nextCol; - free(elem); - elem = NULL; + free(tree->nextCol); tree->nextCol = NULL; } @@ -85,9 +91,7 @@ void removeNextRow(cellElement* tree){ printf("---removeNextRow---\n"); if (tree->nextRow != NULL){ - cellElement* elem = tree->nextRow; - free(elem); - elem =NULL; + free(tree->nextRow); tree->nextRow = NULL; } @@ -95,16 +99,16 @@ void removeNextRow(cellElement* tree){ void recursivePrint(cellElement * tree){ if (tree != NULL){ printf("Elem : x: %d y: %d \n",tree->colIndex,tree->rowIndex); - if (tree->nextCol != NULL){ - recursivePrint(tree->nextCol); - } - if (tree->nextRow != NULL){ - recursivePrint(tree->nextRow); - } - if (tree->nextCol == NULL && tree->nextCol == NULL){ + if (is_leaf(tree)){ printf("leaf\n"); + } else { + if (tree->nextCol != NULL){ + recursivePrint(tree->nextCol); + } + if (tree->nextRow != NULL){ + recursivePrint(tree->nextRow); + } } - } } diff --git a/main.c b/main.c index 153d93a..346236c 100644 --- a/main.c +++ b/main.c @@ -12,19 +12,21 @@ #include int main(int argc, char **argv){ - + cellElement * tree = NULL; tree = CreateCellElem(); tree->colIndex = 1; + tree->rowIndex = 1; AddNextRow(tree); tree->nextRow->colIndex = 2; + tree->nextRow->rowIndex = 2; AddNextCol(tree); tree->nextCol->colIndex = 3; + tree->nextCol->rowIndex = 2; recursivePrint(tree); removeNextRow(tree); removeNextCol(tree); - recursivePrint(tree); return 0;