【数据结构】二叉树的运算

news/2024/5/17 17:56:33/文章来源:https://blog.csdn.net/standingflower/article/details/128126394

 *********************************************************************************************************

本文作者科大MF22某班Noah懒羊羊同学,为大家提供一个作业思路,请勿直接copy!!!一起进步学习~

**********************************************************************************************************

目录

1.问题的描述

1.1基本功能

1.2健壮性

1.3 规范性

2.算法的描述

2.1数据结构的描述

2.2程序结构的描述

3.调试分析

4.算法的时空分析

5.测试结果及分析

6.实验体会和收获

代码

Noah_BiTree.h

 main.cpp


1.问题的描述

1.1基本功能

1、创建二叉树(10’)

可以使用先序遍历输入,无节点的可以使用#表示。

例如下图可以输入6423####51##7##。这里前面2个#表示节点3左右孩子节点都为空,第3个#表示节点2右孩子为空,第4个#表示节点4右孩子为空,1和7后面的2个#分别代表节点1和7的左右孩子节点都为空。

也可以自己选择其他方式输入,但要在readme文件和实验报告说清楚。

 

2、遍历二叉树(先序、中序、后序、层序遍历)(20’)

前序遍历:6423517

中序遍历:3246157

后序遍历:3241756

层序遍历:6452173

3、二叉树的计算(二叉树的结点数、叶子数、高度、宽度等)(20’)

结点数:7

叶子数:3

高度:4

宽度:3

4、 二叉树的处理(复制、销毁)(20’)

复制要创建一个新的二叉树,对于原二叉树和复制的二叉树之间销毁操作不能互相影响。

1.2健壮性

  1. 对于创建的二叉树为空的情况,要能程序要能正常运行并识别。(5分)
  2. 对于空树,其他功能要可以识别、输出相应信息,并且程序不能异常终止。(5分)

1.3 规范性

  1. 代码注释
  2. 程序模块化
  3. 人机交互友好

2.算法的描述

2.1数据结构的描述

程序中应用到的主要数据结构是二叉树(二叉链表)。

 

主要变量说明:

变量

类型

说明

Node、BiTNode

结构体

二叉树结点的结构体

*BiTree

二叉树结点指针

二叉树结点的指针

data

可变(由宏定义TElemType确定,示例中为char)

二叉树结点中的数据域

*lchild

二叉树结点指针

结点的左孩子

*rchild

二叉树结点指针

结点的右孩子

TElemType

宏定义

二叉树节点数据域的类型

2.2程序结构的描述

        程序主要包含Noah_BiTree.h头文件和main.cpp主文件,其中Noah_BiTree.h是二叉链表数据结构的实现代码头文件,N,main.cpp中主要实现菜单和功能界面的交互以及头文件中函数的调用。其具体结构如下图所示。

 

3.调试分析

调试功能一:Create a binary tree and show the tree structure

创建二叉树并显示树的结构

 

测试数据选择:

  1. 6423####51##7##
  2. 124##5##36##7##
  3. #
  4. 1234######

问题及解决方法:

调试功能二:Create a binary tree and show show the preoeder, inorder, postorder and levelorder

创建一个二叉树,显示前序、中序后序和层次遍历。

 

测试数据选择:

  1. 6423####51##7##
  2. 124##5##36##7##
  3. 1234######

问题及解决方法:

调试功能三:Create a binary tree and calculate the number of nodes, leaves, height and width

创建一个二叉树,计算节点的数量,叶,高度和宽度

 

测试数据选择:

  1. 6423####51##7##
  2. 124##5##36##7##
  3. 1234######

问题及解决方法:

调试功能四:Create a binary tree, copy it, destory the original one and show the new tree

创建一个二叉树,复制它,销毁原来的树,并显示新的树

 

测试数据选择:

  1. 6423####51##7##
  2. 124##5##36##7##
  3. 1234######

问题及解决方法:

4.算法的时空分析

(1) CreateBiTree_withhint(BiTree &T)

时间复杂度:O(n)

空间复杂度:O(n)

(2) preorder(BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(3) inorder(BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(4) postorder(BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(5) levelorder(BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(6) NumofNode (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(7) BiHight (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(7) Numofleaves (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(7) BiWidth (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(7) CopyBitree (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

(7) DestroyBiTree (BiTree T)

时间复杂度:O(n)

空间复杂度:O(n)

5.测试结果及分析

测试功能一:Create a binary tree and show the tree structure

测试用例

结果

分析

6423####51##7##

 

124##5##36##7##

 

#

 

1234######

 

调试功能二:Create a binary tree and show show the preoeder, inorder, postorder and levelorder

测试用例

结果

分析

6423####51##7##

 

124##5##36##7##

 

1234######

 

测试功能三:Create a binary tree and calculate the number of nodes, leaves, height and width

测试用例

结果

分析

6423####51##7##

 

124##5##36##7##

 

1234######

 

调试功能四:Create a binary tree, copy it, destory the original one and show the new tree

测试用例

结果

分析

6423####51##7##

 

124##5##36##7##

 

1234######

 

6.实验体会和收获

  1.      掌握二叉树的递归特性
  2.      掌握二叉树的常用存储结构----二叉链表
  3.      掌握二叉树的创建、遍历等基本运算
  4.      了解递归函数的执行过程,学会编写递归程序

代码

Noah_BiTree.h

1.	#ifndef __NOAH_BITREE_H__  
2.	#define __NOAH_BITREE_H__  
3.	#include <stdlib.h>  
4.	#include <iostream>  
5.	#include <cstring>  
6.	#include <queue>  
7.	#include <string>  
8.	#include <iostream>  
9.	using namespace std;  
10.	#define TElemType char  
11.	/* 
12.	1.  对于创建的二叉树为空的情况,要能程序要能正常运行并识别。(5分) 
13.	2.  对于空树,其他功能要可以识别、输出相应信息,并且程序不能异常终止。(5分) 
14.	*/  
15.	typedef struct Node  
16.	{  
17.	    TElemType data;  
18.	    struct Node *lchild,*rchild;//左右孩子指针  
19.	}BiTNode,*BiTree;  
20.	  
21.	void CreateBiTree_Preorder(BiTree &T){  
22.	    //使用先序遍历的输入创建一个二叉树,例如6423####51##7##  
23.	    char x;  
24.	    cin>>x;  
25.	    if(x==' '||x=='#'){  
26.	        T = NULL;  
27.	    }  
28.	    else {  
29.	        T = (BiTree)malloc(sizeof(BiTNode));  
30.	        if(x !='#')  
31.	            T->data = (TElemType)x;  
32.	        CreateBiTree_Preorder(T->lchild);  
33.	        CreateBiTree_Preorder(T->rchild);  
34.	    }  
35.	}  
36.	  
37.	void CreateBiTree_withhint(BiTree &T){  
38.	    //向屏幕输出初始化二叉树的提示信息,调用CreateBiTree_Preorder()  
39.	    cout<<"Please input a preorder sequence of a binary tree(example:6423####51##7##):"<<endl;  
40.	    CreateBiTree_Preorder(T);  
41.	    if(T==NULL) cout<<"Input is an empty BiTree."<<endl;  
42.	}  
43.	  
44.	int isBiTreeEmpty(BiTree T){  
45.	    //判断二叉树是否为空,为空返回1,不为空返回0  
46.	    if((T->data == NULL && T->lchild && T->rchild)||T==NULL)  
47.	        return 1;  
48.	    else  
49.	        return 0;  
50.	}  
51.	  
52.	void preorder(BiTree T){  
53.	    //使用先序遍历输出二叉树  
54.	    if(T){  
55.	        cout<<T->data;  
56.	        preorder(T->lchild);  
57.	        preorder(T->rchild);  
58.	    }  
59.	    else  
60.	        return;  
61.	        //cout<<"Empty BiTree."<<endl;  
62.	}  
63.	  
64.	void inorder(BiTree T){  
65.	    //使用中序遍历输出二叉树  
66.	    if(T){  
67.	        inorder(T->lchild);  
68.	        cout<<T->data;  
69.	        inorder(T->rchild);  
70.	    }  
71.	}  
72.	  
73.	void postorder(BiTree T){  
74.	    //使用后序遍历输出二叉树  
75.	    if(T){  
76.	        postorder(T->lchild);  
77.	        postorder(T->rchild);  
78.	        cout<<T->data;  
79.	    }  
80.	}  
81.	  
82.	void leverorder(BiTree T){  
83.	    //使用层次遍历输出二叉树  
84.	    if(T){  
85.	        queue<BiTree> q;  
86.	        q.push(T);  
87.	        while(!q.empty()){//当队列非空时,还有没有遍历的parent结点  
88.	            BiTree temp = q.front();  
89.	            q.pop();  
90.	            cout<<temp->data;  
91.	            if(temp->lchild!=NULL) q.push(temp->lchild);  
92.	            if(temp->rchild!=NULL) q.push(temp->rchild);  
93.	        }  
94.	    }  
95.	}  
96.	  
97.	int NumofNode(BiTree T){  
98.	    //返回二叉树节点数  
99.	    if(!T) return 0;  
100.	    else return 1 + NumofNode(T->lchild) + NumofNode(T->rchild);  
101.	}  
102.	  
103.	int Numofleaves(BiTree T){  
104.	    //返回二叉树叶子数  
105.	    int num = 0;  
106.	    if(!T) return 0;  
107.	    else{  
108.	        if(T->lchild!=NULL) num = num + Numofleaves(T->lchild);  
109.	        if(T->rchild!=NULL) num = num + Numofleaves(T->rchild);  
110.	        if(T->lchild==NULL && T->rchild==NULL) return 1;  
111.	    }  
112.	    return num;  
113.	}  
114.	  
115.	int BiHight(BiTree T){  
116.	    //返回二叉树高度  
117.	    if(!T) return 0;  
118.	    else{  
119.	        int lefthight = BiHight(T->lchild);  
120.	        int righthight = BiHight(T->rchild);  
121.	        return (lefthight>=righthight)?lefthight+1:righthight+1;  
122.	    }  
123.	}  
124.	  
125.	int BiWidth(BiTree T){  
126.	    //返回二叉树宽度  
127.	    if (isBiTreeEmpty(T)) {  
128.	        return 0;  
129.	    }  
130.	    queue<BiTree> q;  
131.	    int maxWidth = 1;  
132.	    q.push(T);  
133.	  
134.	    while (1) {  
135.	        int len = q.size();  
136.	        if (!len) {  
137.	            break;  
138.	        }  
139.	        while (len--) {  
140.	  
141.	            BiTree temp = q.front();  
142.	            q.pop();  
143.	            if (temp->lchild) {  
144.	                q.push(temp->lchild);  
145.	            }  
146.	            if (temp->rchild) {  
147.	                q.push(temp->rchild);  
148.	            }  
149.	        }  
150.	        maxWidth = max(maxWidth, (int) q.size());  
151.	    }  
152.	    return maxWidth;  
153.	}  
154.	  
155.	void CopyBitree(BiTree source,BiTree &target){  
156.	    //将source中的二叉树复制给target,原二叉树和复制的二叉树之间销毁操作不能互相影响  
157.	    if(!source){  
158.	        target = NULL;  
159.	        return;  
160.	    }  
161.	  
162.	    else{  
163.	        target = (BiTNode *)malloc(sizeof(BiTNode));  
164.	        target->data = (TElemType)source->data;  
165.	        CopyBitree(source->lchild,target->lchild);  
166.	        CopyBitree(source->rchild,target->rchild);  
167.	    }  
168.	}  
169.	  
170.	  
171.	void DestroyBiTree(BiTree &T){  
172.	    //销毁二叉树并释放内存  
173.	    if(isBiTreeEmpty(T)){  
174.	        cout<<"DestroyBiTree succeed."<<endl;  
175.	        return;  
176.	    }  
177.	    else{  
178.	        if(T->lchild!=NULL) DestroyBiTree(T->lchild);  
179.	        if(T->rchild!=NULL) DestroyBiTree(T->rchild);  
180.	        free(T);  
181.	        T = NULL;  
182.	    }  
183.	}  
184.	  
185.	void DisplayBitree_control(BiTree n, bool left, string const& indent){  
186.	    //DisplayBitree()函数的中间控制函数  
187.	    if (n->rchild)  
188.	    {  
189.	        DisplayBitree_control(n->rchild, false, indent + (left ? "|     " : "      "));  
190.	    }  
191.	    cout << indent;  
192.	    cout << (left ? '\\' : '/');  
193.	    cout << "-----";  
194.	    cout << n->data << endl;  
195.	    if (n->lchild)  
196.	    {  
197.	        DisplayBitree_control(n->lchild, true, indent + (left ? "      " : "|     "));  
198.	    }  
199.	}  
200.	void DisplayBitree(BiTree root){  
201.	    //以树形结构形式输出二叉树  
202.	    if(!root){  
203.	        cout<<"An empty tree."<<endl;  
204.	        return;  
205.	    }  
206.	    if (root->rchild)  
207.	    {  
208.	        DisplayBitree_control(root->rchild, false, "");  
209.	    }  
210.	    cout << root->data << endl;  
211.	    if (root->lchild)  
212.	    {  
213.	        DisplayBitree_control(root->lchild, true, "");  
214.	    }  
215.	}  
216.	#endif  

 main.cpp

1.	#include <stdio.h>  
2.	#include <string.h>  
3.	#include <stdlib.h>  
4.	#include <iostream>  
5.	using namespace std;  
6.	#include "Noah_BiTree.h"  
7.	void Menue_gui();  
8.	void func1();  
9.	void func2();  
10.	void func3();  
11.	void func4();  
12.	  
13.	int main()  
14.	{  
15.	    while(1){  
16.	        Menue_gui();  
17.	        int func;  
18.	        scanf("%d",&func);  
19.	        switch(func){  
20.	            case 0:  
21.	                exit(0);  
22.	            case 1:  
23.	                func1();break;  
24.	            case 2:  
25.	                func2();break;  
26.	            case 3:  
27.	                func3();break;  
28.	            case 4:  
29.	                func4();break;  
30.	            default:  
31.	                printf("Input error! Please try again!");  
32.	        }  
33.	        printf("\n");  
34.	        system("pause");  
35.	    }  
36.	    return 0;  
37.	}  
38.	  
39.	//主界面  
40.	void Menue_gui(){  
41.	    system("cls");  
42.	    printf("**********************************Binary Tree calcuator**************************************\n");  
43.	    printf("*********************************************************************************************\n");  
44.	    printf("Menue:\n");  
45.	    printf("\nExit this program------------------------------------------------------------------0.\n");  
46.	    printf("\nCreate a binary tree and show the tree structure-----------------------------------1.\n");  
47.	    printf("\nCreate a binary tree and show show the preoeder, inorder, postorder and levelorder-2.\n");  
48.	    printf("\nCreate a binary tree and calculate the number of nodes, leaves, height and width---3.\n");  
49.	    printf("\nCreate a binary tree, copy it, destory the original one and show the new tree------4.\n");  
50.	    printf("\n**********************************************************************************************\n");  
51.	    printf("Choose the function you want to use(input number):\n");  
52.	}  
53.	  
54.	void func1(){  
55.	    system("cls");  
56.	    printf("-----ENTER FUNCTION : Create a binary tree and show the tree structure--1.-----\n");  
57.	    BiTree T1;  
58.	    CreateBiTree_withhint(T1);  
59.	    DisplayBitree(T1);  
60.	}  
61.	void func2(){  
62.	    system("cls");  
63.	    printf("-----ENTER FUNCTION : Create a binary tree and show show the preoeder, inorder, postorder and levelorder--2.-----\n");  
64.	    BiTree T1;  
65.	    CreateBiTree_withhint(T1);  
66.	    cout<<endl<<"The tree form of the Binary Tree is:"<<endl;  
67.	    DisplayBitree(T1);  
68.	    cout<<endl<<"The preorder of the Binary Tree is:"<<endl;  
69.	    preorder(T1);  
70.	    cout<<endl<<"The inorder of the Binary Tree is:"<<endl;  
71.	    inorder(T1);  
72.	    cout<<endl<<"The postorder of the Binary Tree is:"<<endl;  
73.	    postorder(T1);  
74.	    cout<<endl<<"The levelorder of the Binary Tree is:"<<endl;  
75.	    leverorder(T1);  
76.	}  
77.	void func3(){  
78.	    system("cls");  
79.	    printf("-----ENTER FUNCTION : Create a binary tree and calculate the number of nodes, leaves, height and width--3.-----\n");  
80.	    BiTree T1;  
81.	    CreateBiTree_withhint(T1);  
82.	    cout<<endl<<"The tree form of the Binary Tree is:"<<endl;  
83.	    DisplayBitree(T1);  
84.	    cout<<endl<<"The number of nodes is:"<<NumofNode(T1)<<endl;  
85.	    cout<<endl<<"The number of leaves is:"<<Numofleaves(T1)<<endl;  
86.	    cout<<endl<<"The height is:"<<BiHight(T1)<<endl;  
87.	    cout<<endl<<"The width is:"<<BiWidth(T1)<<endl;  
88.	}  
89.	void func4(){  
90.	    system("cls");  
91.	    printf("-----ENTER FUNCTION : Create a binary tree, copy it, destory the original one and show the new tree--4.-----\n");  
92.	    BiTree T1;  
93.	    CreateBiTree_withhint(T1);  
94.	    cout<<endl<<"The tree form of the [ORIGINAL] Binary Tree is:"<<endl;  
95.	    DisplayBitree(T1);  
96.	    BiTree T2;  
97.	    CopyBitree(T1,T2);//复制T1到T2  
98.	    DestroyBiTree(T1);//销毁T1  
99.	    cout<<endl<<"After destroy, the tree form of the [ORIGINAL] Binary Tree is:"<<endl;  
100.	    DisplayBitree(T1);  
101.	    cout<<endl<<"The tree form of the [NEW] Binary Tree is:"<<endl;  
102.	    DisplayBitree(T2);  
103.	}  

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

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

相关文章

极值分析:分块极大值BLOCK-MAXIMA、阈值超额法、广义帕累托分布GPD拟合降雨数据时间序列...

全文链接&#xff1a;http://tecdat.cn/?p25348 你们可能知道&#xff0c;实际极值分析有两种常用方法&#xff1a;分块极大值Block-maxima、阈值超额法threshold excess&#xff08;点击文末“阅读原文”获取完整代码数据&#xff09;。今天&#xff0c;我们将分别介绍这两种…

【毕业设计】10-基于单片机的车站安检门_磁性霍尔传感器系统设计(原理图+源码+仿真工程+答辩论文)

【毕业设计】10-基于单片机的车站安检门/磁性霍尔传感器系统设计&#xff08;原理图源码仿真工程答辩论文&#xff09; 文章目录【毕业设计】10-基于单片机的车站安检门/磁性霍尔传感器系统设计&#xff08;原理图源码仿真工程答辩论文&#xff09;任务书设计说明书摘要设计框架…

【数据结构】Java实现数据结构的前置知识,时间复杂度空间复杂度,泛型类的讲解

文章目录数据结构时间复杂度、空间复杂度包装类、装箱与拆箱泛型擦除机制数据结构 当我们在成为一名程序员的这条道路上努力的时候&#xff0c;我们一定经常听到这个词数据结构。那么究竟什么是数据结构呢&#xff1f;数据结构顾名思义&#xff0c;就是数据结构&#xff0c;数…

【深度学习】详解 CLIP

目录 摘要 一、引言和激励性工作 二、方法 2.1 自然语言监督 2.2 创建一个足够大的数据集 2.3 选择一种有效的预训练方法 2.4 选择和放缩一个模型 2.5 训练 三、实验 3.1 零次迁移 3.1.1 激励 Github&#xff1a;GitHub - openai/CLIP: Contrastive Language-Image …

Android 导航之Navigation 组件的介绍与使用

1、介绍&#xff1a; 在以前的应用中&#xff0c;针对多导航模块的使用&#xff0c;常见的有tabhost或者FragmentTabHost&#xff0c;但是这些在使用的过程中&#xff0c;非常臃肿&#xff0c;包括加载和管理也不如人意。在AndroidX中&#xff0c;官方引入Navigation模块&#…

Spring | IOC技术之Bean的配置与实例化

&#x1f451; 博主简介&#xff1a;    &#x1f947; Java领域新星创作者    &#x1f947; 阿里云开发者社区专家博主、星级博主、技术博主 &#x1f91d; 交流社区&#xff1a;BoBooY&#xff08;优质编程学习笔记社区&#xff09; 文章目录Bean的基础配置1、id 与 cla…

Anaconda默认安装在C:\Users\xxx\.conda\envs中

目录 问题&#xff1a; 解决&#xff1a; 更改默认安装位置 移动已安装环境 问题&#xff1a; 解决&#xff1a; 更改默认安装位置 用记事本打开 C:\Users\zqk\.condarc 在最后插入 envs_dirs: - D://anzhuang//Anaconda3//envs 如若需更改pkgs&#xff0c;插入如下代…

OTA: Optimal Transport Assignment for Object Detection 原理与代码解读

paper&#xff1a;OTA: Optimal Transport Assignment for Object Detection code&#xff1a;https://github.com/Megvii-BaseDetection/OTA 背景 标签分配&#xff08;Label Assignment&#xff09;是目标检测中重要的一环&#xff0c;经典的标签分配策略采用预定义的规则…

Caffeine 源码、架构、原理(史上最全,10W字 超级长文)

文章很长&#xff0c;而且持续更新&#xff0c;建议收藏起来&#xff0c;慢慢读&#xff01;疯狂创客圈总目录 博客园版 为您奉上珍贵的学习资源 &#xff1a; 免费赠送 :《尼恩Java面试宝典》 持续更新 史上最全 面试必备 2000页 面试必备 大厂必备 涨薪必备 免费赠送 经典…

【剧前爆米花--爪哇岛寻宝】面向对象的三大特性——封装、继承以及多态的详细剖析(中——多态)。

作者&#xff1a;困了电视剧 专栏&#xff1a;《JavaSE语法与底层详解》 文章分布&#xff1a;这是一篇关于Java面向对象三大特性——多态的文章&#xff0c;在本篇文章中我会分享多态的一些基础语法以及类在继承时代码的底层逻辑和执行顺序。 目录 多态的定义及实现条件 多态…

【程序人生】4年创作纪念日,不忘初心,继续前行

&#x1f4eb;作者简介&#xff1a;小明java问道之路&#xff0c;专注于研究 Java/ Liunx内核/ C及汇编/计算机底层原理/源码&#xff0c;就职于大型金融公司后端高级工程师&#xff0c;擅长交易领域的高安全/可用/并发/性能的架构设计与演进、系统优化与稳定性建设。 &#x1…

CleanMyMac X2022苹果电脑专业清理Mac加速器软件

CleanMyMac X2023最新免费版苹果电脑专业清理软件&#xff0c;对于Mac电脑用户来说&#xff0c;Cleanmymac X是一款再熟悉不过的电脑清理软件&#xff0c;它是由苹果认证并对外承认的一款第三方清理软件&#xff0c;几乎有95%的Mac用户都会安装并使用&#xff0c;Cleanmymac X究…

从一泡尿的工夫说起

大家好&#xff0c;我是校长。今天聊点不一样的&#xff0c;昨天读书的一点深刻感悟。大家有没有想过这么一个问题&#xff1a;如果没有记录时间的工具被发明&#xff0c;没有时钟&#xff0c;我们现在的生活会怎么样&#xff1f;在那个时钟尚未出现的日子里&#xff0c;如果确…

人工智能-机器学习-深度学习-概述

文章目录一&#xff1a;人工智能需要的基础和涉及内容二&#xff1a;数学基础&#xff08;1&#xff09;线性代数&#xff08;2&#xff09;概率论&#xff08;3&#xff09;数理统计&#xff08;4&#xff09;最优化方法&#xff08;5&#xff09;信息论三&#xff1a;机器学习…

虹科活动 | SWCF 2022卫星通信与仿真测试线上研讨会倒计时,快来报名吧!

您是否在因线下论坛的地点限制而错失技术干货分享&#xff1f;您是否因时间安排而无法亲临现场与行业专家交流&#xff1f;虹科举办全新线上论坛SWCF&#xff0c;与行业专家一起为您带来最新热点话题讨论与技术干货分享&#xff01; 什么是SWCF 虹科每年将开展卫星与无线通信…

计算机毕业设计之java+ssm网络硬硬盘系统网站

项目介绍 网盘&#xff0c;又称网络U盘、网络硬盘&#xff0c;是一些网络公司推出的在线存储服务。向用户提供文件的存储、访问、备份、共享等文件管理功能&#xff0c;使用起来十分方便。不花钱的移动硬盘。用户可以把网盘看成一个放在网络上的硬盘或U盘&#xff0c;不管你是…

量子计算(十):量子计算原理

文章目录 量子计算原理 一、酉变换 二、矩阵的指数函数 三、单位矩阵 四、单量子比特逻辑门 五、泡利矩阵 六、常见逻辑门 量子计算原理 经典计算中&#xff0c;最基本的单元是比特&#xff0c;而最基本的控制模式是逻辑门&#xff0c;可以通过逻辑门的组合来达到控制电…

如何做好风险管控,杜绝项目风险突然爆发?

软件开发最怕临近交付期&#xff0c;项目风险突然爆发。那么如何做好风险管理&#xff0c;提前排除隐患&#xff1f; 1、提前规划开发风险的科学管理与控制流程 项目需建立自己的组织级别风险资产库&#xff0c;并在开发过程中&#xff0c;不断地更新和完善。并对项目风险进行科…

Java搭建宝塔部署实战毕设项目springboot车险理赔管理系统源码

大家好啊&#xff0c;我是测评君&#xff0c;欢迎来到web测评。 本期给大家带来一套Java开发的毕业设计项目springboot车险理赔管理系统源码。 技术架构 技术框架&#xff1a;SpringBoot mybatis bootstrap jquery mysql5.7运行环境&#xff1a;jdk8 nginx1.20 tomcat9 …

Spring IoC依赖注入-6

1. 依赖注入的模式和模型: Spring 提供了哪些依赖注入的模式和类型? 手动模式 - 配置或者编程的方式&#xff0c;提前安排注入规则 XML资源配置元信息Java 注解配置元信息API 配置元信息 自动模式 - 实现方提供依赖自动关联的方式&#xff0c;按照内建的注入规则 Autowiring …