mirror of
				https://github.com/krahets/hello-algo.git
				synced 2025-11-04 06:07:20 +08:00 
			
		
		
		
	Add destructors to the C++ codes.
This commit is contained in:
		@ -23,6 +23,8 @@ int* extend(int* nums, int size, int enlarge) {
 | 
				
			|||||||
    for (int i = 0; i < size; i++) {
 | 
					    for (int i = 0; i < size; i++) {
 | 
				
			||||||
        res[i] = nums[i];
 | 
					        res[i] = nums[i];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete[] nums;
 | 
				
			||||||
    // 返回扩展后的新数组
 | 
					    // 返回扩展后的新数组
 | 
				
			||||||
    return res;
 | 
					    return res;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@ -82,10 +84,7 @@ int main() {
 | 
				
			|||||||
    
 | 
					    
 | 
				
			||||||
    /* 长度扩展 */
 | 
					    /* 长度扩展 */
 | 
				
			||||||
    int enlarge = 3;
 | 
					    int enlarge = 3;
 | 
				
			||||||
    int* res = extend(nums, size, enlarge);
 | 
					    nums = extend(nums, size, enlarge);
 | 
				
			||||||
    int* temp = nums;
 | 
					 | 
				
			||||||
    nums = res;
 | 
					 | 
				
			||||||
    delete[] temp;
 | 
					 | 
				
			||||||
    size += enlarge;
 | 
					    size += enlarge;
 | 
				
			||||||
    cout << "将数组长度扩展至 8 ,得到 nums = ";
 | 
					    cout << "将数组长度扩展至 8 ,得到 nums = ";
 | 
				
			||||||
    PrintUtil::printArray(nums, size);
 | 
					    PrintUtil::printArray(nums, size);
 | 
				
			||||||
@ -107,5 +106,9 @@ int main() {
 | 
				
			|||||||
    int index = find(nums, size, 3);
 | 
					    int index = find(nums, size, 3);
 | 
				
			||||||
    cout << "在 nums 中查找元素 3 ,得到索引 = " << index << endl;
 | 
					    cout << "在 nums 中查找元素 3 ,得到索引 = " << index << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete[] arr;
 | 
				
			||||||
 | 
					    delete[] nums;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -83,5 +83,8 @@ int main() {
 | 
				
			|||||||
    int index = find(n0, 2);
 | 
					    int index = find(n0, 2);
 | 
				
			||||||
    cout << "链表中值为 2 的结点的索引 = " << index << endl;
 | 
					    cout << "链表中值为 2 的结点的索引 = " << index << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    freeMemoryLinkedList(n0);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -20,6 +20,11 @@ public:
 | 
				
			|||||||
        nums = new int[numsCapacity];
 | 
					        nums = new int[numsCapacity];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    /* 析构函数 */
 | 
				
			||||||
 | 
					    ~MyList() {
 | 
				
			||||||
 | 
					        delete[] nums;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 获取列表长度(即当前元素数量)*/
 | 
					    /* 获取列表长度(即当前元素数量)*/
 | 
				
			||||||
    int size() {
 | 
					    int size() {
 | 
				
			||||||
        return numsSize;
 | 
					        return numsSize;
 | 
				
			||||||
@ -90,14 +95,14 @@ public:
 | 
				
			|||||||
    void extendCapacity() {
 | 
					    void extendCapacity() {
 | 
				
			||||||
        // 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组
 | 
					        // 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组
 | 
				
			||||||
        int newCapacity = capacity() * extendRatio;
 | 
					        int newCapacity = capacity() * extendRatio;
 | 
				
			||||||
        int* extend = new int[newCapacity];
 | 
					        int* tmp = nums;
 | 
				
			||||||
 | 
					        nums = new int[newCapacity];
 | 
				
			||||||
        // 将原数组中的所有元素复制到新数组
 | 
					        // 将原数组中的所有元素复制到新数组
 | 
				
			||||||
        for (int i = 0; i < size(); i++) {
 | 
					        for (int i = 0; i < size(); i++) {
 | 
				
			||||||
            extend[i] = nums[i];
 | 
					            nums[i] = tmp[i];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        int* temp = nums;
 | 
					        // 释放内存
 | 
				
			||||||
        nums = extend;
 | 
					        delete[] tmp;
 | 
				
			||||||
        delete[] temp;
 | 
					 | 
				
			||||||
        numsCapacity = newCapacity;
 | 
					        numsCapacity = newCapacity;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@ -160,5 +165,8 @@ int main() {
 | 
				
			|||||||
    PrintUtil::printVector(vec);
 | 
					    PrintUtil::printVector(vec);
 | 
				
			||||||
    cout << "容量 = " << list->capacity() << " ,长度 = " << list->size() << endl;
 | 
					    cout << "容量 = " << list->capacity() << " ,长度 = " << list->size() << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete list;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -56,5 +56,9 @@ int main() {
 | 
				
			|||||||
    cout << "方法二 res = ";
 | 
					    cout << "方法二 res = ";
 | 
				
			||||||
    PrintUtil::printVector(res);
 | 
					    PrintUtil::printVector(res);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete slt1;
 | 
				
			||||||
 | 
					    delete slt2;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -18,7 +18,7 @@ void constant(int n) {
 | 
				
			|||||||
    const int a = 0;
 | 
					    const int a = 0;
 | 
				
			||||||
    int b = 0;
 | 
					    int b = 0;
 | 
				
			||||||
    vector<int> nums(10000);
 | 
					    vector<int> nums(10000);
 | 
				
			||||||
    ListNode* node = new ListNode(0);
 | 
					    ListNode node(0);
 | 
				
			||||||
    // 循环中的变量占用 O(1) 空间
 | 
					    // 循环中的变量占用 O(1) 空间
 | 
				
			||||||
    for (int i = 0; i < n; i++) {
 | 
					    for (int i = 0; i < n; i++) {
 | 
				
			||||||
        int c = 0;
 | 
					        int c = 0;
 | 
				
			||||||
@ -34,9 +34,9 @@ void linear(int n) {
 | 
				
			|||||||
    // 长度为 n 的数组占用 O(n) 空间
 | 
					    // 长度为 n 的数组占用 O(n) 空间
 | 
				
			||||||
    vector<int> nums(n);
 | 
					    vector<int> nums(n);
 | 
				
			||||||
    // 长度为 n 的列表占用 O(n) 空间
 | 
					    // 长度为 n 的列表占用 O(n) 空间
 | 
				
			||||||
    vector<ListNode*> nodes;
 | 
					    vector<ListNode> nodes;
 | 
				
			||||||
    for (int i = 0; i < n; i++) {
 | 
					    for (int i = 0; i < n; i++) {
 | 
				
			||||||
        nodes.push_back(new ListNode(i));
 | 
					        nodes.push_back(ListNode(i));
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    // 长度为 n 的哈希表占用 O(n) 空间
 | 
					    // 长度为 n 的哈希表占用 O(n) 空间
 | 
				
			||||||
    unordered_map<int, string> map;
 | 
					    unordered_map<int, string> map;
 | 
				
			||||||
@ -98,5 +98,8 @@ int main() {
 | 
				
			|||||||
    TreeNode* root = buildTree(n);
 | 
					    TreeNode* root = buildTree(n);
 | 
				
			||||||
    PrintUtil::printTree(root);
 | 
					    PrintUtil::printTree(root);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    freeMemoryTree(root);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -21,6 +21,10 @@ public:
 | 
				
			|||||||
        nums = new int[capacity];
 | 
					        nums = new int[capacity];
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~ArrayQueue() {
 | 
				
			||||||
 | 
					        delete[] nums;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 获取队列的容量 */
 | 
					    /* 获取队列的容量 */
 | 
				
			||||||
    int capacity() {
 | 
					    int capacity() {
 | 
				
			||||||
        return cap;
 | 
					        return cap;
 | 
				
			||||||
@ -117,5 +121,8 @@ int main() {
 | 
				
			|||||||
        PrintUtil::printVector(queue->toVector());
 | 
					        PrintUtil::printVector(queue->toVector());
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete queue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -78,5 +78,8 @@ int main() {
 | 
				
			|||||||
    bool empty = stack->empty();
 | 
					    bool empty = stack->empty();
 | 
				
			||||||
    cout << "栈是否为空 = " << empty << endl;
 | 
					    cout << "栈是否为空 = " << empty << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -19,6 +19,11 @@ public:
 | 
				
			|||||||
        queSize = 0;
 | 
					        queSize = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~LinkedListQueue() {
 | 
				
			||||||
 | 
					        delete front;
 | 
				
			||||||
 | 
					        delete rear;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 获取队列的长度 */
 | 
					    /* 获取队列的长度 */
 | 
				
			||||||
    int size() {
 | 
					    int size() {
 | 
				
			||||||
        return queSize;
 | 
					        return queSize;
 | 
				
			||||||
@ -108,5 +113,8 @@ int main() {
 | 
				
			|||||||
    bool empty = queue->empty();
 | 
					    bool empty = queue->empty();
 | 
				
			||||||
    cout << "队列是否为空 = " << empty << endl;
 | 
					    cout << "队列是否为空 = " << empty << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete queue;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -18,6 +18,10 @@ public:
 | 
				
			|||||||
        stkSize = 0;
 | 
					        stkSize = 0;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~LinkedListStack() {
 | 
				
			||||||
 | 
					        freeMemoryLinkedList(stackTop);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 获取栈的长度 */
 | 
					    /* 获取栈的长度 */
 | 
				
			||||||
    int size() {
 | 
					    int size() {
 | 
				
			||||||
        return stkSize;
 | 
					        return stkSize;
 | 
				
			||||||
@ -97,5 +101,8 @@ int main() {
 | 
				
			|||||||
    bool empty = stack->empty();
 | 
					    bool empty = stack->empty();
 | 
				
			||||||
    cout << "栈是否为空 = " << empty << endl;
 | 
					    cout << "栈是否为空 = " << empty << endl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete stack;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -17,6 +17,10 @@ public:
 | 
				
			|||||||
        root = buildTree(nums, 0, nums.size() - 1);  // 构建二叉搜索树
 | 
					        root = buildTree(nums, 0, nums.size() - 1);  // 构建二叉搜索树
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    ~BinarySearchTree() {
 | 
				
			||||||
 | 
					        freeMemoryTree(root);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /* 获取二叉树根结点 */
 | 
					    /* 获取二叉树根结点 */
 | 
				
			||||||
    TreeNode* getRoot() {
 | 
					    TreeNode* getRoot() {
 | 
				
			||||||
        return root;
 | 
					        return root;
 | 
				
			||||||
@ -152,5 +156,8 @@ int main() {
 | 
				
			|||||||
    cout << endl << "删除结点 4 后,二叉树为\n" << endl;
 | 
					    cout << endl << "删除结点 4 后,二叉树为\n" << endl;
 | 
				
			||||||
    PrintUtil::printTree(bst->getRoot());
 | 
					    PrintUtil::printTree(bst->getRoot());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete bst;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -37,5 +37,8 @@ int main() {
 | 
				
			|||||||
    cout << endl << "删除结点 P 后\n" << endl;
 | 
					    cout << endl << "删除结点 P 后\n" << endl;
 | 
				
			||||||
    PrintUtil::printTree(n1);
 | 
					    PrintUtil::printTree(n1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    freeMemoryTree(n1);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -48,3 +48,18 @@ ListNode* getListNode(ListNode *head, int val) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
    return head;
 | 
					    return head;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief Free the memory allocated to a linked list
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @param cur 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void freeMemoryLinkedList(ListNode *cur) {
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    ListNode *pre;
 | 
				
			||||||
 | 
					    while (cur != nullptr) {
 | 
				
			||||||
 | 
					        pre = cur;
 | 
				
			||||||
 | 
					        cur = cur->next;
 | 
				
			||||||
 | 
					        delete pre;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -68,3 +68,16 @@ TreeNode *getTreeNode(TreeNode *root, int val) {
 | 
				
			|||||||
    TreeNode *right = getTreeNode(root->right, val);
 | 
					    TreeNode *right = getTreeNode(root->right, val);
 | 
				
			||||||
    return left != nullptr ? left : right;
 | 
					    return left != nullptr ? left : right;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * @brief Free the memory allocated to a tree
 | 
				
			||||||
 | 
					 * 
 | 
				
			||||||
 | 
					 * @param root 
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					void freeMemoryTree(TreeNode *root) {
 | 
				
			||||||
 | 
					    if (root == nullptr) return;
 | 
				
			||||||
 | 
					    freeMemoryTree(root->left);    
 | 
				
			||||||
 | 
					    freeMemoryTree(root->right);
 | 
				
			||||||
 | 
					    // 释放内存
 | 
				
			||||||
 | 
					    delete root;    
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
				
			|||||||
@ -245,6 +245,8 @@ elementAddr = firtstElementAddr + elementLength * elementIndex
 | 
				
			|||||||
        for (int i = 0; i < size; i++) {
 | 
					        for (int i = 0; i < size; i++) {
 | 
				
			||||||
            res[i] = nums[i];
 | 
					            res[i] = nums[i];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        // 释放内存
 | 
				
			||||||
 | 
					        delete[] nums;
 | 
				
			||||||
        // 返回扩展后的新数组
 | 
					        // 返回扩展后的新数组
 | 
				
			||||||
        return res;
 | 
					        return res;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
				
			|||||||
@ -748,6 +748,11 @@ comments: true
 | 
				
			|||||||
            nums = new int[numsCapacity];
 | 
					            nums = new int[numsCapacity];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        /* 析构函数 */
 | 
				
			||||||
 | 
					        ~MyList() {
 | 
				
			||||||
 | 
					            delete[] nums;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        /* 获取列表长度(即当前元素数量)*/
 | 
					        /* 获取列表长度(即当前元素数量)*/
 | 
				
			||||||
        int size() {
 | 
					        int size() {
 | 
				
			||||||
            return numsSize;
 | 
					            return numsSize;
 | 
				
			||||||
@ -818,14 +823,14 @@ comments: true
 | 
				
			|||||||
        void extendCapacity() {
 | 
					        void extendCapacity() {
 | 
				
			||||||
            // 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组
 | 
					            // 新建一个长度为 size * extendRatio 的数组,并将原数组拷贝到新数组
 | 
				
			||||||
            int newCapacity = capacity() * extendRatio;
 | 
					            int newCapacity = capacity() * extendRatio;
 | 
				
			||||||
            int* extend = new int[newCapacity];
 | 
					            int* tmp = nums;
 | 
				
			||||||
 | 
					            nums = new int[newCapacity];
 | 
				
			||||||
            // 将原数组中的所有元素复制到新数组
 | 
					            // 将原数组中的所有元素复制到新数组
 | 
				
			||||||
            for (int i = 0; i < size(); i++) {
 | 
					            for (int i = 0; i < size(); i++) {
 | 
				
			||||||
                extend[i] = nums[i];
 | 
					                nums[i] = tmp[i];
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            int* temp = nums;
 | 
					            // 释放内存
 | 
				
			||||||
            nums = extend;
 | 
					            delete[] tmp;
 | 
				
			||||||
            delete[] temp;
 | 
					 | 
				
			||||||
            numsCapacity = newCapacity;
 | 
					            numsCapacity = newCapacity;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    };
 | 
					    };
 | 
				
			||||||
 | 
				
			|||||||
@ -507,7 +507,7 @@ $$
 | 
				
			|||||||
        const int a = 0;
 | 
					        const int a = 0;
 | 
				
			||||||
        int b = 0;
 | 
					        int b = 0;
 | 
				
			||||||
        vector<int> nums(10000);
 | 
					        vector<int> nums(10000);
 | 
				
			||||||
        ListNode* node = new ListNode(0);
 | 
					        ListNode node(0);
 | 
				
			||||||
        // 循环中的变量占用 O(1) 空间
 | 
					        // 循环中的变量占用 O(1) 空间
 | 
				
			||||||
        for (int i = 0; i < n; i++) {
 | 
					        for (int i = 0; i < n; i++) {
 | 
				
			||||||
            int c = 0;
 | 
					            int c = 0;
 | 
				
			||||||
@ -654,9 +654,9 @@ $$
 | 
				
			|||||||
        // 长度为 n 的数组占用 O(n) 空间
 | 
					        // 长度为 n 的数组占用 O(n) 空间
 | 
				
			||||||
        vector<int> nums(n);
 | 
					        vector<int> nums(n);
 | 
				
			||||||
        // 长度为 n 的列表占用 O(n) 空间
 | 
					        // 长度为 n 的列表占用 O(n) 空间
 | 
				
			||||||
        vector<ListNode*> nodes;
 | 
					        vector<ListNode> nodes;
 | 
				
			||||||
        for (int i = 0; i < n; i++) {
 | 
					        for (int i = 0; i < n; i++) {
 | 
				
			||||||
            nodes.push_back(new ListNode(i));
 | 
					            nodes.push_back(ListNode(i));
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        // 长度为 n 的哈希表占用 O(n) 空间
 | 
					        // 长度为 n 的哈希表占用 O(n) 空间
 | 
				
			||||||
        unordered_map<int, string> map;
 | 
					        unordered_map<int, string> map;
 | 
				
			||||||
 | 
				
			|||||||
@ -330,6 +330,10 @@ comments: true
 | 
				
			|||||||
            rear = nullptr;
 | 
					            rear = nullptr;
 | 
				
			||||||
            queSize = 0;
 | 
					            queSize = 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        ~LinkedListQueue() {
 | 
				
			||||||
 | 
					            delete front;
 | 
				
			||||||
 | 
					            delete rear;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        /* 获取队列的长度 */
 | 
					        /* 获取队列的长度 */
 | 
				
			||||||
        int size() {
 | 
					        int size() {
 | 
				
			||||||
            return queSize;
 | 
					            return queSize;
 | 
				
			||||||
@ -784,6 +788,9 @@ comments: true
 | 
				
			|||||||
            cap = capacity;
 | 
					            cap = capacity;
 | 
				
			||||||
            nums = new int[capacity];
 | 
					            nums = new int[capacity];
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        ~ArrayQueue() {
 | 
				
			||||||
 | 
					            delete[] nums;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        /* 获取队列的容量 */
 | 
					        /* 获取队列的容量 */
 | 
				
			||||||
        int capacity() {
 | 
					        int capacity() {
 | 
				
			||||||
            return cap;
 | 
					            return cap;
 | 
				
			||||||
 | 
				
			|||||||
@ -324,6 +324,9 @@ comments: true
 | 
				
			|||||||
            stackTop = nullptr;
 | 
					            stackTop = nullptr;
 | 
				
			||||||
            stkSize = 0;
 | 
					            stkSize = 0;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					        ~LinkedListStack() {
 | 
				
			||||||
 | 
					            freeMemoryLinkedList(stackTop);
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
        /* 获取栈的长度 */
 | 
					        /* 获取栈的长度 */
 | 
				
			||||||
        int size() {
 | 
					        int size() {
 | 
				
			||||||
            return stkSize;
 | 
					            return stkSize;
 | 
				
			||||||
 | 
				
			|||||||
@ -22,19 +22,15 @@ comments: true
 | 
				
			|||||||
- 若 `cur.val = num` ,说明找到目标结点,跳出循环并返回该结点即可;
 | 
					- 若 `cur.val = num` ,说明找到目标结点,跳出循环并返回该结点即可;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Step 1"
 | 
					=== "Step 1"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Step 2"
 | 
					=== "Step 2"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Step 3"
 | 
					=== "Step 3"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=== "Step 4"
 | 
					=== "Step 4"
 | 
				
			||||||
 | 
					 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
 | 
					
 | 
				
			||||||
二叉搜索树的查找操作和二分查找算法如出一辙,也是在每轮排除一半情况。循环次数最多为二叉树的高度,当二叉树平衡时,使用 $O(\log n)$ 时间。
 | 
					二叉搜索树的查找操作和二分查找算法如出一辙,也是在每轮排除一半情况。循环次数最多为二叉树的高度,当二叉树平衡时,使用 $O(\log n)$ 时间。
 | 
				
			||||||
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user