changeset 1049:24390402f72d

...
author matac42 <matac@cr.ie.u-ryukyu.ac.jp>
date Wed, 24 Jan 2024 18:50:52 +0900
parents 1a1b50736246
children 88ece4cac620
files src/parallel_execution/RedBlackTree.cbc src/parallel_execution/test/rbTreeCopy_test.cbc
diffstat 2 files changed, 15 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/src/parallel_execution/RedBlackTree.cbc	Wed Jan 24 14:58:32 2024 +0900
+++ b/src/parallel_execution/RedBlackTree.cbc	Wed Jan 24 18:50:52 2024 +0900
@@ -118,8 +118,17 @@
 }
 
 __code leftDown1(struct RedBlackTree* tree, struct Stack* outputStack) {
+    struct Stack* nodeStack = tree->nodeStack;
+    struct Node* oldNode = tree->current;
+    tree->current = tree->current->left;
+
+    printf("leftDown1\n");
+    goto nodeStack->push((union Data*)oldNode, leftDown2);
+}
+
+__code leftDown2(struct RedBlackTree* tree, struct Stack* outputStack) {
     struct Stack* inputStack = tree->inputStack;
-    printf("leftDown1\n");
+    printf("leftDown2\n");
     if (tree->current->left) {
         // ここではnodeStackを積みたいが......
         // leftDown2を作るか
@@ -147,7 +156,8 @@
 __code up(struct RedBlackTree* tree, struct Stack* inputStack, struct Stack* outputStack) {
     struct Stack* nodeStack = tree->nodeStack;
     struct Node* newNode = tree->newNode;
-    struct Node* node = &(inputStack->data)->Node;
+    // inputStack->data見てるのは間違い
+    struct Node* node = tree->current;
     printf("up\n");
     // popでNULLだった場合どうなる?
     if (node->left) {
--- a/src/parallel_execution/test/rbTreeCopy_test.cbc	Wed Jan 24 14:58:32 2024 +0900
+++ b/src/parallel_execution/test/rbTreeCopy_test.cbc	Wed Jan 24 18:50:52 2024 +0900
@@ -53,9 +53,9 @@
 }
 
 //
-//   2
-//  / \
-// 1   3
+//   2(B)
+//   / \
+// 1(R) 3(R)
 //
 
 __code rbTreeTest4(struct Tree* tree) {