网站开发目录结构金融平台网站开发

news/2025/9/30 2:08:48/文章来源:
网站开发目录结构,金融平台网站开发,东莞php网站开发,国外优秀网页设计赏析AVL树是高度平衡的而二叉树。它的特点是#xff1a;AVL树中任何节点的两个子树的高度最大差别为1。 旋转 如果在AVL树中进行插入或删除节点后#xff0c;可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态#xff1a;LL(左左)#xff0c;LR(左右)#xff0c;RR(右…AVL树是高度平衡的而二叉树。它的特点是AVL树中任何节点的两个子树的高度最大差别为1。 旋转 如果在AVL树中进行插入或删除节点后可能导致AVL树失去平衡。这种失去平衡的可以概括为4种姿态LL(左左)LR(左右)RR(右右)和RL(右左)。下面给出它们的示意图 1) LLLeftLeft也称为”左左”。插入或删除一个节点后根节点的左子树的左子树还有非空子节点导致”根的左子树的高度”比”根的右子树的高度”大2导致AVL树失去了平衡。 例如在上面LL情况中由于”根节点(8)的左子树(4)的左子树(2)还有非空子节点”而”根节点(8)的右子树(12)没有子节点”导致”根节点(8)的左子树(4)高度”比”根节点(8)的右子树(12)”高2。 (2) LRLeftRight也称为”左右”。插入或删除一个节点后根节点的左子树的右子树还有非空子节点导致”根的左子树的高度”比”根的右子树的高度”大2导致AVL树失去了平衡。 例如在上面LR情况中由于”根节点(8)的左子树(4)的左子树(6)还有非空子节点”而”根节点(8)的右子树(12)没有子节点”导致”根节点(8)的左子树(4)高度”比”根节点(8)的右子树(12)”高2。 (3) RLRightLeft称为”右左”。插入或删除一个节点后根节点的右子树的左子树还有非空子节点导致”根的右子树的高度”比”根的左子树的高度”大2导致AVL树失去了平衡。 例如在上面RL情况中由于”根节点(8)的右子树(12)的左子树(10)还有非空子节点”而”根节点(8)的左子树(4)没有子节点”导致”根节点(8)的右子树(12)高度”比”根节点(8)的左子树(4)”高2。 (4) RRRightRight称为”右右”。插入或删除一个节点后根节点的右子树的右子树还有非空子节点导致”根的右子树的高度”比”根的左子树的高度”大2导致AVL树失去了平衡。 例如在上面RR情况中由于”根节点(8)的右子树(12)的右子树(14)还有非空子节点”而”根节点(8)的左子树(4)没有子节点”导致”根节点(8)的右子树(12)高度”比”根节点(8)的左子树(4)”高2。 前面说过如果在AVL树中进行插入或删除节点后可能导致AVL树失去平衡。AVL失去平衡之后可以通过旋转使其恢复平衡下面分别介绍”LL(左左)LR(左右)RR(右右)和RL(右左)”这4种情况对应的旋转方法。 2.1 LL的旋转 LL失去平衡的情况可以通过一次旋转让AVL树恢复平衡。如下图 /** LL左左对应的情况(左单旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::leftLeftRotation(AVLTreeNodeT* k2) {AVLTreeNodeT* k1;k1 k2-left;k2-left k1-right;k1-right k2;k2-height max( height(k2-left), height(k2-right)) 1;k1-height max( height(k1-left), k2-height) 1;return k1; } 2.2 RR的旋转 理解了LL之后RR就相当容易理解了。RR是与LL对称的情况RR恢复平衡的旋转方法如下 /** RR右右对应的情况(右单旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::rightRightRotation(AVLTreeNodeT* k1) {AVLTreeNodeT* k2;k2 k1-right;k1-right k2-left;k2-left k1;k1-height max( height(k1-left), height(k1-right)) 1;k2-height max( height(k2-right), k1-height) 1;return k2; } 2.3 LR的旋转 LR失去平衡的情况需要经过两次旋转才能让AVL树恢复平衡。如下图 /** LR左右对应的情况(左双旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::leftRightRotation(AVLTreeNodeT* k3) {k3-left rightRightRotation(k3-left);return leftLeftRotation(k3); } 2.4 RL的旋转 RL是与LR的对称情况RL恢复平衡的旋转方法如下 /** RL右左对应的情况(右双旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::rightLeftRotation(AVLTreeNodeT* k1) {k1-right leftLeftRotation(k1-right);return rightRightRotation(k1); } 完整代码 #ifndef _AVL_TREE_HPP_ #define _AVL_TREE_HPP_#include iomanip #include iostream using namespace std;template class T class AVLTreeNode{public:T key; // 关键字(键值)int height; // 高度AVLTreeNode *left; // 左孩子AVLTreeNode *right; // 右孩子AVLTreeNode(T value, AVLTreeNode *l, AVLTreeNode *r):key(value), height(0),left(l),right(r) {} };template class T class AVLTree {private:AVLTreeNodeT *mRoot; // 根结点public:AVLTree();~AVLTree();// 获取树的高度int height();// 获取树的高度int max(int a, int b);// 前序遍历AVL树void preOrder();// 中序遍历AVL树void inOrder();// 后序遍历AVL树void postOrder();// (递归实现)查找AVL树中键值为key的节点AVLTreeNodeT* search(T key);// (非递归实现)查找AVL树中键值为key的节点AVLTreeNodeT* iterativeSearch(T key);// 查找最小结点返回最小结点的键值。T minimum();// 查找最大结点返回最大结点的键值。T maximum();// 将结点(key为节点键值)插入到AVL树中void insert(T key);// 删除结点(key为节点键值)void remove(T key);// 销毁AVL树void destroy();// 打印AVL树void print();private:// 获取树的高度int height(AVLTreeNodeT* tree) ;// 前序遍历AVL树void preOrder(AVLTreeNodeT* tree) const;// 中序遍历AVL树void inOrder(AVLTreeNodeT* tree) const;// 后序遍历AVL树void postOrder(AVLTreeNodeT* tree) const;// (递归实现)查找AVL树x中键值为key的节点AVLTreeNodeT* search(AVLTreeNodeT* x, T key) const;// (非递归实现)查找AVL树x中键值为key的节点AVLTreeNodeT* iterativeSearch(AVLTreeNodeT* x, T key) const;// 查找最小结点返回tree为根结点的AVL树的最小结点。AVLTreeNodeT* minimum(AVLTreeNodeT* tree);// 查找最大结点返回tree为根结点的AVL树的最大结点。AVLTreeNodeT* maximum(AVLTreeNodeT* tree);// LL左左对应的情况(左单旋转)。AVLTreeNodeT* leftLeftRotation(AVLTreeNodeT* k2);// RR右右对应的情况(右单旋转)。AVLTreeNodeT* rightRightRotation(AVLTreeNodeT* k1);// LR左右对应的情况(左双旋转)。AVLTreeNodeT* leftRightRotation(AVLTreeNodeT* k3);// RL右左对应的情况(右双旋转)。AVLTreeNodeT* rightLeftRotation(AVLTreeNodeT* k1);// 将结点(z)插入到AVL树(tree)中AVLTreeNodeT* insert(AVLTreeNodeT* tree, T key);// 删除AVL树(tree)中的结点(z)并返回被删除的结点AVLTreeNodeT* remove(AVLTreeNodeT* tree, AVLTreeNodeT* z);// 销毁AVL树void destroy(AVLTreeNodeT* tree);// 打印AVL树void print(AVLTreeNodeT* tree, T key, int direction); };/* * 构造函数*/ template class T AVLTreeT::AVLTree():mRoot(NULL) { }/* * 析构函数*/ template class T AVLTreeT::~AVLTree() {destroy(mRoot); }/** 获取树的高度*/ template class T int AVLTreeT::height(AVLTreeNodeT* tree) {if (tree ! NULL)return tree-height;return 0; }template class T int AVLTreeT::height() {return height(mRoot); } /** 比较两个值的大小*/ template class T int AVLTreeT::max(int a, int b) {return ab ? a : b; }/** 前序遍历AVL树*/ template class T void AVLTreeT::preOrder(AVLTreeNodeT* tree) const {if(tree ! NULL){cout tree-key ;preOrder(tree-left);preOrder(tree-right);} }template class T void AVLTreeT::preOrder() {preOrder(mRoot); }/** 中序遍历AVL树*/ template class T void AVLTreeT::inOrder(AVLTreeNodeT* tree) const {if(tree ! NULL){inOrder(tree-left);cout tree-key ;inOrder(tree-right);} }template class T void AVLTreeT::inOrder() {inOrder(mRoot); }/** 后序遍历AVL树*/ template class T void AVLTreeT::postOrder(AVLTreeNodeT* tree) const {if(tree ! NULL){postOrder(tree-left);postOrder(tree-right);cout tree-key ;} }template class T void AVLTreeT::postOrder() {postOrder(mRoot); }/** (递归实现)查找AVL树x中键值为key的节点*/ template class T AVLTreeNodeT* AVLTreeT::search(AVLTreeNodeT* x, T key) const {if (xNULL || x-keykey)return x;if (key x-key)return search(x-left, key);elsereturn search(x-right, key); }template class T AVLTreeNodeT* AVLTreeT::search(T key) {return search(mRoot, key); }/** (非递归实现)查找AVL树x中键值为key的节点*/ template class T AVLTreeNodeT* AVLTreeT::iterativeSearch(AVLTreeNodeT* x, T key) const {while ((x!NULL) (x-key!key)){if (key x-key)x x-left;elsex x-right;}return x; }template class T AVLTreeNodeT* AVLTreeT::iterativeSearch(T key) {return iterativeSearch(mRoot, key); }/* * 查找最小结点返回tree为根结点的AVL树的最小结点。*/ template class T AVLTreeNodeT* AVLTreeT::minimum(AVLTreeNodeT* tree) {if (tree NULL)return NULL;while(tree-left ! NULL)tree tree-left;return tree; }template class T T AVLTreeT::minimum() {AVLTreeNodeT *p minimum(mRoot);if (p ! NULL)return p-key;return (T)NULL; }/* * 查找最大结点返回tree为根结点的AVL树的最大结点。*/ template class T AVLTreeNodeT* AVLTreeT::maximum(AVLTreeNodeT* tree) {if (tree NULL)return NULL;while(tree-right ! NULL)tree tree-right;return tree; }template class T T AVLTreeT::maximum() {AVLTreeNodeT *p maximum(mRoot);if (p ! NULL)return p-key;return (T)NULL; }/** LL左左对应的情况(左单旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::leftLeftRotation(AVLTreeNodeT* k2) {AVLTreeNodeT* k1;k1 k2-left;k2-left k1-right;k1-right k2;k2-height max( height(k2-left), height(k2-right)) 1;k1-height max( height(k1-left), k2-height) 1;return k1; }/** RR右右对应的情况(右单旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::rightRightRotation(AVLTreeNodeT* k1) {AVLTreeNodeT* k2;k2 k1-right;k1-right k2-left;k2-left k1;k1-height max( height(k1-left), height(k1-right)) 1;k2-height max( height(k2-right), k1-height) 1;return k2; }/** LR左右对应的情况(左双旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::leftRightRotation(AVLTreeNodeT* k3) {k3-left rightRightRotation(k3-left);return leftLeftRotation(k3); }/** RL右左对应的情况(右双旋转)。** 返回值旋转后的根节点*/ template class T AVLTreeNodeT* AVLTreeT::rightLeftRotation(AVLTreeNodeT* k1) {k1-right leftLeftRotation(k1-right);return rightRightRotation(k1); }/* * 将结点插入到AVL树中并返回根节点** 参数说明* tree AVL树的根结点* key 插入的结点的键值* 返回值* 根节点*/ template class T AVLTreeNodeT* AVLTreeT::insert(AVLTreeNodeT* tree, T key) {if (tree NULL) {// 新建节点tree new AVLTreeNodeT(key, NULL, NULL);if (treeNULL){cout ERROR: create avltree node failed! endl;return NULL;}}else if (key tree-key) // 应该将key插入到tree的左子树的情况{tree-left insert(tree-left, key);// 插入节点后若AVL树失去平衡则进行相应的调节。if (height(tree-left) - height(tree-right) 2){if (key tree-left-key)tree leftLeftRotation(tree);elsetree leftRightRotation(tree);}}else if (key tree-key) // 应该将key插入到tree的右子树的情况{tree-right insert(tree-right, key);// 插入节点后若AVL树失去平衡则进行相应的调节。if (height(tree-right) - height(tree-left) 2){if (key tree-right-key)tree rightRightRotation(tree);elsetree rightLeftRotation(tree);}}else //key tree-key){cout 添加失败不允许添加相同的节点 endl;}tree-height max( height(tree-left), height(tree-right)) 1;return tree; }template class T void AVLTreeT::insert(T key) {insert(mRoot, key); }/* * 删除结点(z)返回根节点** 参数说明* tree AVL树的根结点* z 待删除的结点* 返回值* 根节点*/ template class T AVLTreeNodeT* AVLTreeT::remove(AVLTreeNodeT* tree, AVLTreeNodeT* z) {// 根为空 或者 没有要删除的节点直接返回NULL。if (treeNULL || zNULL)return NULL;if (z-key tree-key) // 待删除的节点在tree的左子树中{tree-left remove(tree-left, z);// 删除节点后若AVL树失去平衡则进行相应的调节。if (height(tree-right) - height(tree-left) 2){AVLTreeNodeT *r tree-right;if (height(r-left) height(r-right))tree rightLeftRotation(tree);elsetree rightRightRotation(tree);}}else if (z-key tree-key)// 待删除的节点在tree的右子树中{tree-right remove(tree-right, z);// 删除节点后若AVL树失去平衡则进行相应的调节。if (height(tree-left) - height(tree-right) 2){AVLTreeNodeT *l tree-left;if (height(l-right) height(l-left))tree leftRightRotation(tree);elsetree leftLeftRotation(tree);}}else // tree是对应要删除的节点。{// tree的左右孩子都非空if ((tree-left!NULL) (tree-right!NULL)){if (height(tree-left) height(tree-right)){// 如果tree的左子树比右子树高// 则(01)找出tree的左子树中的最大节点// (02)将该最大节点的值赋值给tree。// (03)删除该最大节点。// 这类似于用tree的左子树中最大节点做tree的替身// 采用这种方式的好处是删除tree的左子树中最大节点之后AVL树仍然是平衡的。AVLTreeNodeT* max maximum(tree-left);tree-key max-key;tree-left remove(tree-left, max);}else{// 如果tree的左子树不比右子树高(即它们相等或右子树比左子树高1)// 则(01)找出tree的右子树中的最小节点// (02)将该最小节点的值赋值给tree。// (03)删除该最小节点。// 这类似于用tree的右子树中最小节点做tree的替身// 采用这种方式的好处是删除tree的右子树中最小节点之后AVL树仍然是平衡的。AVLTreeNodeT* min maximum(tree-right);tree-key min-key;tree-right remove(tree-right, min);}}else{AVLTreeNodeT* tmp tree;tree (tree-left!NULL) ? tree-left : tree-right;delete tmp;}}return tree; }template class T void AVLTreeT::remove(T key) {AVLTreeNodeT* z; if ((z search(mRoot, key)) ! NULL)mRoot remove(mRoot, z); }/* * 销毁AVL树*/ template class T void AVLTreeT::destroy(AVLTreeNodeT* tree) {if (treeNULL)return ;if (tree-left ! NULL)destroy(tree-left);if (tree-right ! NULL)destroy(tree-right);delete tree; }template class T void AVLTreeT::destroy() {destroy(mRoot); }/** 打印二叉查找树** key -- 节点的键值 * direction -- 0表示该节点是根节点;* -1表示该节点是它的父结点的左孩子;* 1表示该节点是它的父结点的右孩子。*/ template class T void AVLTreeT::print(AVLTreeNodeT* tree, T key, int direction) {if(tree ! NULL){if(direction0) // tree是根节点cout setw(2) tree-key is root endl;else // tree是分支节点cout setw(2) tree-key is setw(2) key s setw(12) (direction1?right child : left child) endl;print(tree-left, tree-key, -1);print(tree-right,tree-key, 1);} }template class T void AVLTreeT::print() {if (mRoot ! NULL)print(mRoot, mRoot-key, 0); } #endif 测试代码 /*** C 语言: AVL树** author skywang* date 2013/11/07*/#include iostream #include start.h using namespace std;static int arr[] {3,2,1,4,5,6,7,16,15,14,13,12,11,10,8,9}; #define TBL_SIZE(a) ( (sizeof(a)) / (sizeof(a[0])) )int main() {int i,ilen;AVLTreeint* treenew AVLTreeint();cout 依次添加: ;ilen TBL_SIZE(arr);for(i0; iilen; i){cout arr[i] ;tree-insert(arr[i]);}cout \n 前序遍历: ;tree-preOrder();cout \n 中序遍历: ;tree-inOrder();cout \n 后序遍历: ;tree-postOrder();cout endl;cout 高度: tree-height() endl;cout 最小值: tree-minimum() endl;cout 最大值: tree-maximum() endl;cout 树的详细信息: endl;tree-print();i 8;cout \n 删除根节点: i;tree-remove(i);cout \n 高度: tree-height() ;cout \n 中序遍历: ;tree-inOrder();cout \n 树的详细信息: endl;tree-print();// 销毁二叉树tree-destroy();system(pause);return 0; } References AVL树(二)之 C的实现 - 如果天空不死 - 博客园 效果如下

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/922406.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

哪个网站用帝国cms做的中企动力做销售的感受

人类大脑有数百亿个相互连接的神经元(如下图(a)所示),这些神经元通过树突从其他神经元接收信息,在细胞体内综合、并变换信息,通过轴突上的突触向其他神经元传递信息。我们在博文《最优化方法Python计算:无约…

相亲网与做网站互联网推广手段

2024年网安面试题大全 秋招目录(随时更新) 有最新的公司校招信息可以随时issue,我会第一时间更新 以安全为主业的公司我就不放了(360、深信服、奇安信等),主要放不以安全为主业但有安全业务的公司 公司…

湘潭做网站 联系磐石网络seo零基础入门到精通200讲

安徽淮北市成人学电脑?-"零基础"入学,签订就业协议,保证就业薪资,先就业后付款让你学习无忧就业无忧!成人学电脑 安徽成人学电脑 淮北市成人学电脑学电脑找高薪就业it专业就选择VR环境艺术创意设计师:专业优势,装饰行业需要人才时代…

金汇网站建设wordpress搜站点网络中断

题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 示例 1: 输入:n 2 输出:2 解释:有两种方法可以爬到楼顶。 1. 1 阶 1 阶 …

网站开发交接协议书国外被动收入网站做的好的

来源:xhtmlrenderer 将html转换成pdf,完美css,带图片,手动分页,解决内容断开的问题 - 煮过的花朵 - 博客园 之前用itext7将html导出为pdf,比较方便,代码较少,而且支持base64的图片。…

9.29 闲话

写对了九月的最后一天。 一年前和现在有什么区别呢?都是令人心碎的日子罢了。 晚上放学后和高二小朋友在校园里随机游走,说了很多莫名其妙的话,我在想什么呢?我也不知道。在去高三教学楼的路上,他提了一下班级照片…

舟山网络公司网站建设公司企点官网下载安装

这四个概念分别代表不同的工具和框架,它们的主要区别如下: Simple App:这通常指的是一个基础的、最小化的应用程序。它可能只包含最基础的功能,如用户界面、一些简单的交互等。这种应用程序通常用于学习和实验目的,或者…

网站开发工作方案文稿写作网站

上一篇我们使用keyby后发现数据严重倾斜 https://datamining.blog.csdn.net/article/details/105316728 大概看下问题所在,大量数据在一个subtask中运行 这里我们使用两阶段keyby 解决该问题 之前的问题如下图所示 我们期望的是 但我们的需要根据key进行聚合统计&a…

三门峡市建设局官方网站网络舆情监测与预警系统通过对海量

青少年软件编程(Python)等级考试试卷(一级) 一、单选题(共25题,共50分) 1. 可以对Python代码进行多行注释的是?( ) A. #

US$164 Scorpio-LK Emulators SLK-02 for Tango Key Programmer including Authorization

Scorpio-LK Emulators SLK-02 for TangoPrice including authrization and the emulator together.Quick Referrence Table Package Includes:1pc x Scorpio-LK Emulators SLK-02 for TangoPictures of Scorpio-LK Emu…

做网站图片素材在线编辑做投票页面什么网站好

QUESTION:Sublime Text 3无法安装Package Control插件的解决? ANSWER: 为了更准确的定位问题,建议插件在安装前开启控制台(快捷键Ctrl~),同时在开启debug模式,这样可以在安装过程中了解哪一步出了问题,然后有针对性…

US$54 New Design DB25 Adapter for CG PRO 9S12 Programmer

New Design DB25 Adapter for CG PRO 9S12 ProgrammerFunctions: Operating Motorola Series(Freescale)This is New Design DB25 Adapter, please make sure the connector of your CG Pro 9S12 is New.We will arran…

购物网站后台设计无法转换中文wordpress

通过 Kubeflow XGBoost Training Operator 支持在 Kubernetes 上进行分布式 XGBoost 训练和批量预测。 操作步骤 为在 Kubernetes 集群上运行 XGBoost 作业,执行以下步骤: 在 Kubernetes 集群上安装 XGBoost Operator。 XGBoost Operator 旨在管理 XGB…

网站备案时间周期一般多久网站开发实用技术2.8.5

【CCF BDCI 2023】多模态多方对话场景下的发言人识别 Baseline 0.71 NLP 部分 概述NLP 简介文本处理词嵌入上下文理解 文本数据加载to_device 函数构造数据加载样本数量 len获取样本 getitem 分词构造函数调用函数轮次嵌入 RobertaRoberta 创新点NSP (Next Sentence Prediction…

最牛的视频网站建设网页设计的流程是什么

RapidClick是一款简单实用的自动点击软件。它可以模拟鼠标点击操作,以便快速、连续地点击屏幕上的特定位置。该软件通常用于自动执行重复性的点击任务或加快某些操作的速度。 以下是RapidClick可能提供的一些主要功能和特点: 自动点击功能:R…

门户网站开发用什么框架好商务网站开发开题报告

简介: 随着 5G/ 芯片 / 区块链等等新技术的不断成熟、云计算的普及和云原生时代带来的诸多便捷,开发者和架构师们眼前的挑战也不再只是 0-1 的建设问题,技术如何更多地带来业务价值成为了一个值得讨论的话题。阿里巴巴集团研究员,…

MMU的作用

内存管理单元(MMU)是计算机系统中用于管理内存访问的硬件组件,它具有以下多方面的好处: 内存保护隔离不同进程:在多任务操作系统中,MMU 可以为每个进程分配独立的虚拟地址空间,使得不同进程之间的内存空间相互隔…

知名网站开发哪里有运营一款app的费用

TCP是一个有状态通讯协议,所谓的有状态是指通信过程中通信的双方各自维护连接的状态。一、TCP keepalive先简单回顾一下TCP连接建立和断开的整个过程。(这里主要考虑主流程,关于丢包、拥塞、窗口、失败重试等情况后面详细讨论。)首先是客户端发送syn(Syn…

US$16 Yanhua BMW F/G Chassis Odometer Wiring Harness

Yanhua BMW F/G Chassis Odometer Wiring HarnessGood helper of resetting odometer.Function: Use BMW F/G chassis odometer wiring harness connects the odometer and power the wiring harness. Press the wake…

List-To-Table

List-To-Table导航 (返回顶部)1. List 2. List.txt-List.xlsx2.1 添加软件ID[Sid] 2.2 构造2维表格结构(包含第一列和第一行的字段的空表) 2.3 获取具体信息(填充表格信息)3. XLOOKUP3.1 语法及返回 3.2 参数 3.3 测试…