• 大小: 7.42MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-09-23
  • 语言: C/C++
  • 标签: C  language  

资源简介

C语言采用邻接表结构实现克鲁斯卡尔算法。 也可以在相应github上下载,https://github.com/Sunnk/Data-Structure,其中Kruskal文件夹中即为克鲁斯卡尔算法,可用vs打开

资源截图

代码片段和文件信息

#include “binarytree.h“

/** \brief This function visit each node of the binary tree in a preorder traversal
 *          1.visit the node; 2.traverse the left subtree; 3.traverse the right subtree
 *
 * \param root: pointer to the root node of the binary tree
 * \param visit_func: pointer to the function to call for each node visited
 * \param user_data: user data to pass to the function
 * \return none
 *
 */
//前序遍历二叉树,遍历过程中,调用访问函数visit_func访问节点内部数据元素。
//参数user_data作为访问函数visit_func的传入参数,可以携带内容,丰富访问操作。若弃用,则传入NULL。
void btree_traverse_preorder(BTNode *root VisitFunc visit_func void *user_data)
{
#ifdef USING_RECURSION
    if(root == NULL) return;
    if(visit_func){
        visit_func(root user_data);
    }
    btree_traverse_preorder(root->left_child visit_func user_data);
    btree_traverse_preorder(root->right_child visit_func user_data);
#else
    BTNode *current_node;
    Stack *stack;

    if(root == NULL) return;
    stack = stack_create();
    stack_push(stack root);
    while(stack_pop(stack (void **)¤t_node) == RET_OK){
        if(current_node->right_child){
            stack_push(stack current_node->right_child);
        }
        if(current_node->left_child){
            stack_push(stack current_node->left_child);
        }
        if(visit_func){
            visit_func(current_node user_data);
        }
    }

    stack_destroy(stack);
#endif
}

/** \brief This function visit each node of the binary tree in a inorder traversal
 *          1.traverse the left subtree; 2.visit the node; 3.traverse the right subtree
 *
 * \param root: pointer to the root node of the binary tree
 * \param visit_func: pointer to the function to call for each node visited
 * \param user_data: user data to pass to the function
 * \return none
 *
 */
//中序遍历二叉树,遍历过程中,调用访问函数visit_func访问节点内部数据元素。
//参数user_data作为访问函数visit_func的传入参数,可以携带内容,丰富访问操作。若弃用,则传入NULL。
void btree_traverse_inorder(BTNode *root VisitFunc visit_func void *user_data)
{
#ifdef USING_RECURSION
    if(root == NULL) return;
    btree_traverse_inorder(root->left_child visit_func user_data);
    if(visit_func){
        visit_func(root user_data);
    }
    btree_traverse_inorder(root->right_child visit_func user_data);
#else
    BTNode *current_node;
    Stack *stack;

    if(root == NULL) return;
    stack = stack_create();
    current_node = root;
    while(current_node != NULL || stack_count_depth(stack) > 0){
        if(current_node != NULL){
            stack_push(stack current_node);
            current_node = current_node->left_child;
        }else{
            stack_pop(stack (void **)¤t_node);
            if(visit_func){
                visit_func(current_node user_data);
            }
            current_node = current_node->right_child;
        }
    }

    stack_destroy(stack);
#endif // USING_RECURSION
}

/** \brief This function visit each node of the binary tree in

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-12-27 15:05  .vs\
     目录           0  2018-12-27 15:05  .vs\Kruskal\
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\
     文件       65024  2018-12-10 16:34  .vs\Kruskal\v15\.suo
     文件     2043904  2018-12-10 16:34  .vs\Kruskal\v15\Browse.VC.db
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\21ef5de3d1fdf1c2\
     文件     1966080  2018-12-10 16:32  .vs\Kruskal\v15\ipch\AutoPCH\21ef5de3d1fdf1c2\MAIN.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\6b6f05537c908cbd\
     文件     3538944  2018-12-06 15:53  .vs\Kruskal\v15\ipch\AutoPCH\6b6f05537c908cbd\GRAPH.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\6b8d9b537caa892e\
     文件     2293760  2018-12-05 10:22  .vs\Kruskal\v15\ipch\AutoPCH\6b8d9b537caa892e\GRAPH.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\9beb1942cf6d9de8\
     文件     3604480  2018-12-05 18:01  .vs\Kruskal\v15\ipch\AutoPCH\9beb1942cf6d9de8\BINARYTREE.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\c946e4776ea78650\
     文件     3538944  2018-12-05 23:20  .vs\Kruskal\v15\ipch\AutoPCH\c946e4776ea78650\SLIST.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\c966f9fc9907b8f8\
     文件     3604480  2018-12-05 23:20  .vs\Kruskal\v15\ipch\AutoPCH\c966f9fc9907b8f8\QUEUE.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\e81562c6613ea037\
     文件     3604480  2018-12-05 23:16  .vs\Kruskal\v15\ipch\AutoPCH\e81562c6613ea037\STACK.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\ef333eb252170370\
     文件     3604480  2018-12-10 16:32  .vs\Kruskal\v15\ipch\AutoPCH\ef333eb252170370\KRUSKAL.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v15\ipch\AutoPCH\ef58a0b25236c633\
     文件     4390912  2018-12-05 16:14  .vs\Kruskal\v15\ipch\AutoPCH\ef58a0b25236c633\KRUSKAL.ipch
     目录           0  2018-12-27 15:05  .vs\Kruskal\v16\
     文件       64000  2018-12-27 13:44  .vs\Kruskal\v16\.suo
     目录           0  2018-12-27 15:05  .vs\Kruskal\v16\Preview\
     文件     2043904  2018-12-27 13:44  .vs\Kruskal\v16\Preview\Browse.VC.db
     目录           0  2018-12-27 15:05  .vs\Kruskal\v16\Preview\ipch\
     目录           0  2018-12-27 15:05  .vs\Kruskal\v16\Preview\ipch\AutoPCH\
............此处省略45个文件信息

评论

共有 条评论