实验报告 BST
二叉排序树的实验报告
二叉排序树的实验报告二叉排序树的实验报告引言:二叉排序树(Binary Search Tree,简称BST)是一种常用的数据结构,它将数据按照一定的规则组织起来,便于快速的查找、插入和删除操作。
本次实验旨在深入了解二叉排序树的原理和实现,并通过实验验证其性能和效果。
一、实验背景二叉排序树是一种二叉树,其中每个节点的值大于其左子树的所有节点的值,小于其右子树的所有节点的值。
这种特性使得在二叉排序树中进行查找操作时,可以通过比较节点的值来确定查找的方向,从而提高查找效率。
二、实验目的1. 理解二叉排序树的基本原理和性质;2. 掌握二叉排序树的构建、插入和删除操作;3. 验证二叉排序树在查找、插入和删除等操作中的性能和效果。
三、实验过程1. 构建二叉排序树首先,我们需要构建一个空的二叉排序树。
在构建过程中,我们可以选择一个节点作为根节点,并将其他节点插入到树中。
插入节点时,根据节点的值与当前节点的值进行比较,如果小于当前节点的值,则将其插入到当前节点的左子树中;如果大于当前节点的值,则将其插入到当前节点的右子树中。
重复这个过程,直到所有节点都被插入到树中。
2. 插入节点在已有的二叉排序树中插入新的节点时,我们需要遵循一定的规则。
首先,从根节点开始,将新节点的值与当前节点的值进行比较。
如果小于当前节点的值,则将其插入到当前节点的左子树中;如果大于当前节点的值,则将其插入到当前节点的右子树中。
如果新节点的值与当前节点的值相等,则不进行插入操作。
3. 删除节点在二叉排序树中删除节点时,我们需要考虑不同的情况。
如果要删除的节点是叶子节点,即没有左右子树,我们可以直接删除该节点。
如果要删除的节点只有一个子树,我们可以将子树连接到要删除节点的父节点上。
如果要删除的节点有两个子树,我们可以选择将其右子树中的最小节点或左子树中的最大节点替代该节点,并删除相应的替代节点。
四、实验结果通过对二叉排序树的构建、插入和删除操作的实验,我们得到了以下结果:1. 二叉排序树可以高效地进行查找操作。
BST实验报告
HUNAN UNIVERSITY课程预习报告题目:BST学生XX学生学号201208专业班级指导老师完成日期一、需求分析(1)输入的形式和输入值的X围:建表的输入:第一次输入一个正整数N,代表接下来要输入的结点值的个数。
以后输入N个整数,分别代表N个结点的值,中间用空格隔开。
输入格式为:“34 76 45 18 26 54 92 65”。
查询的输入:输入一个整数,代表需要在表中查询的值。
不对非法输入做处理,即假设输入都是合法的。
(2)输出的形式:对于需要查询的数,如果存在表中则输出“查找成功”并输出比较的次数,如果不存在表中,则输出“查找不成功,已插入表中”。
(3)程序所能达到的功能:本程序可以创建一个动态查找链表,可以对用户输入的数据进行查询,输出查询数据过程中的比较次数,对于不存在的数据还可以动态插入到正确的位置。
(4)测试数据:输入:8//BST的节点个数34, 76, 45, 18, 26, 54, 92, 65 //8个数据45//查找45输出:查找成功 3 //返回成功和查找时比较的次数34//查找34输出:查找成功 1 //返回成功和查找时比较的次数100//查找100输出:查找不成功 3 //返回成功和查找时比较的次数二、概要设计抽象数据类型对于一个具有插入和查询功能的动态查询表,可以使用顺序表和链表来实现,但是在这个查找问题中,顺序表不够链表方便,我们需要插入和检索的时间效率更高,因此选择使用二叉查找树(BST)来实现这个动态查询表。
查询表中的数据类型作为BST的结点,所以需要定义一个结点类来实现数据及其关系的存储。
结点类的ADT如下:数据类型:D=(a1,a2…ai|aiЄZ)基本操作:int val() //返回结点的数值inline Node* left()const //获取左结点inline Node* right()const //获取右结点void setLeft(Node* it) //设置左结点void setRight(Node* it) //设置右结点BST的ADT如下:数据对象:Node类型数据关系:二叉树基本操作:bool insert(const int& it) //插入元素bool find(int& it,int& count) //查找元素算法的基本思想对于用户输入的n的值来确定表中所应该有的结点个数,将结点依次输入,按照BST树的要求,每个结点的左子树的所有结点值都比该结点值小,右子树的所有结点值都比该结点值大,查询时,将用户输入的元素进行查找操作,从根结点依次比较,若该元素存在并输出比较的次数,若不存在则输出提示语句。
测铁含量实验报告
一、实验目的1. 熟悉分光光度法测定铁含量的原理和操作方法。
2. 掌握标准曲线法在定量分析中的应用。
3. 学会使用分光光度计进行实验操作。
二、实验原理分光光度法是一种基于物质对特定波长光的吸收特性进行定量分析的方法。
在本实验中,利用铁与邻二氮菲形成络合物,该络合物在特定波长下具有显著吸收,通过测定其吸光度,可以计算出铁的含量。
实验原理如下:1. 标准溶液配制:准确称取一定量的铁标准物质,用稀盐酸溶解,转移至容量瓶中,定容至一定体积,得到铁标准溶液。
2. 标准曲线绘制:分别取一定量的铁标准溶液,加入适量的邻二氮菲溶液,振荡均匀,放置一段时间后,以蒸馏水为参比,在特定波长下测定其吸光度,以铁的浓度为横坐标,吸光度为纵坐标,绘制标准曲线。
3. 样品测定:取一定量的待测样品,按照与标准溶液相同的步骤进行处理,测定其吸光度,根据标准曲线计算出样品中铁的含量。
三、实验仪器与试剂1. 仪器:分光光度计、电子天平、容量瓶、移液管、吸量管、锥形瓶、烧杯、玻璃棒等。
2. 试剂:铁标准溶液、邻二氮菲溶液、稀盐酸、蒸馏水等。
四、实验步骤1. 标准溶液配制:准确称取0.1g铁标准物质,用稀盐酸溶解,转移至100ml容量瓶中,定容至刻度,得到浓度为1000mg/L的铁标准溶液。
2. 标准曲线绘制:分别取0.5ml、1.0ml、1.5ml、2.0ml、2.5ml铁标准溶液,加入适量的邻二氮菲溶液,振荡均匀,放置10分钟,以蒸馏水为参比,在510nm波长下测定其吸光度,以铁的浓度为横坐标,吸光度为纵坐标,绘制标准曲线。
3. 样品测定:取一定量的待测样品,按照与标准溶液相同的步骤进行处理,测定其吸光度,根据标准曲线计算出样品中铁的含量。
五、实验结果与分析1. 标准曲线绘制:以铁浓度为横坐标,吸光度为纵坐标,绘制标准曲线。
根据曲线方程,计算铁的标准浓度与吸光度之间的关系。
2. 样品测定:根据标准曲线,计算样品中铁的含量。
六、实验总结本实验通过分光光度法测定铁含量,成功绘制了标准曲线,并利用该曲线对样品进行了定量分析。
细胞周期实验报告
细胞周期实验报告一、实验目的本实验旨在研究细胞周期的各个阶段,包括 G1 期、S 期、G2 期和M 期,以及细胞在不同阶段的生理和生化变化。
通过对细胞周期的深入了解,有助于我们更好地理解细胞生长、分裂和遗传物质传递的机制,为相关疾病的研究和治疗提供理论基础。
二、实验原理细胞周期是指细胞从一次分裂结束到下一次分裂结束所经历的过程。
细胞周期的进程受到多种因素的调控,包括细胞内的一系列信号通路和蛋白质复合物。
常用的检测细胞周期的方法是利用流式细胞术,通过对细胞内DNA 含量的测定来区分不同的细胞周期阶段。
处于 G1 期的细胞具有二倍体的 DNA 含量,S 期细胞的 DNA 含量逐渐增加,G2 期和 M 期细胞具有四倍体的 DNA 含量。
三、实验材料与方法(一)实验材料1、细胞株:选用_____细胞株。
2、试剂:胰蛋白酶、PBS 缓冲液、70%乙醇、PI 染液、RNA 酶等。
3、仪器:流式细胞仪、离心机、显微镜等。
(二)实验方法1、细胞培养将细胞接种在培养皿中,在含10%血清的培养基中,置于37℃、5% CO2 的培养箱中培养,待细胞汇合度达到 80%左右时进行实验。
2、细胞收集用胰蛋白酶消化细胞,离心收集,用 PBS 缓冲液洗涤两次。
3、固定细胞将细胞沉淀重悬于 70%乙醇中,于-20℃固定过夜。
4、染色离心去除乙醇,用 PBS 缓冲液洗涤细胞,加入 PI 染液和 RNA 酶,避光孵育 30 分钟。
5、流式细胞术检测用流式细胞仪检测细胞的荧光强度,分析细胞周期各阶段的分布比例。
四、实验结果(一)细胞周期各阶段的比例通过流式细胞术分析,得到以下细胞周期各阶段的比例:G1 期:_____%S 期:_____%G2 期:_____%M 期:_____%(二)结果分析1、 G1 期比例较高,可能表示细胞处于静止或生长缓慢的状态。
2、 S 期比例适中,说明细胞正在进行 DNA 合成,细胞的增殖活动正常。
3、 G2 期和 M 期比例相对较低,可能与细胞的生长条件或细胞本身的特性有关。
WB破坏性实验报告详解
材料基本原理
依銲接原理來說當銲接時,是利用金與銀、銅、鐵、鎳合金的共金效果來 銲鑄 第一焊點為金與鋁或銅與鋁兩種金屬的銲合 依材料科學的角度來看,這是ㄧ種「介金屬化合物」的生成(Intermetallic Phase) 當兩種金屬互相接觸在一起時,擴散的過程將會開始,兩者原子將會在介 面間互相進行擴散作用,當金和鋁原子互相擴散時,某種形式的化合物於 是形成,這種形成的化合物即稱為「介金屬化合物」 而在焊接時溫度及超音波能量將會幫助原子間彼此的擴散,介金屬化合物 可提供界面間的接著力,以完成銲接的過程,但因製程溫度的變化所產生 的結構變形及所受介面間的熱應力,會產生常見的兩種破壞方式情況: (一)晶片破壞(Die Crack):在晶片受到大應力時所衍生的破裂現象。 (二)脫層(Delamination):材料性質不匹配,因而在介面處的剪應力與拉 應力太大,使介面脫層。
page 3
横断面实验(cross section)
對直接作用在晶片表面的焊點來說,除考慮焊接點的強度外,銲接前後 還要檢查晶片的內部結構的構造是否有任何受損 (cratering)的現象。
強酸強鹼實驗 (Etching) :
在焊接后必須检查晶片內部结构的狀況,所以使用饱和的強鹼強酸溶液 来腐蚀掉焊点及晶片表面的铝层,用足够倍率的显微镜下观察內部结构 是否受損(cratering) 、全剥离(沿球与铝层界面剥离)、金球残留、 铝层断裂、球內断裂和弹坑…等现象。
2018/10/30
ASM Pacific Technology Ltd. © 2009
半导体实验报告
半导体实验报告一、实验目的本次半导体实验旨在深入了解半导体材料的特性和相关器件的工作原理,通过实验操作和数据测量,掌握半导体物理性能的测试方法,以及分析和解决实验中遇到的问题。
二、实验原理(一)半导体的导电特性半导体的导电能力介于导体和绝缘体之间,其电导率会随着温度、杂质浓度等因素的变化而发生显著改变。
这是由于半导体中的载流子(电子和空穴)浓度受到这些因素的影响。
(二)PN 结的形成与特性当 P 型半导体和 N 型半导体接触时,会在接触面形成 PN 结。
PN 结具有单向导电性,即在正向偏置时导通,反向偏置时截止。
(三)半导体器件的工作原理以二极管为例,其核心就是 PN 结。
当二极管正向偏置时,电流容易通过;反向偏置时,只有极小的反向饱和电流。
三、实验设备与材料(一)实验设备1、半导体特性测试仪2、数字示波器3、电源4、恒温箱(二)实验材料1、硅二极管若干2、锗二极管若干3、不同掺杂浓度的半导体样品四、实验步骤(一)测量二极管的伏安特性1、将二极管接入测试电路,缓慢改变施加在二极管两端的电压,从正向 0V 开始,逐步增加到较大的正向电压,然后再从 0V 开始,逐步增加到较大的反向电压。
2、记录不同电压下通过二极管的电流值。
(二)研究温度对二极管特性的影响1、将二极管放入恒温箱,设置不同的温度(如 20℃、50℃、80℃等)。
2、在每个温度下,重复测量二极管的伏安特性。
(三)测量半导体样品的电阻随温度的变化1、用四探针法测量半导体样品在不同温度下的电阻值。
2、记录温度和对应的电阻值。
五、实验数据与结果(一)二极管伏安特性1、硅二极管正向特性:在较低的正向电压下,电流增长缓慢;当电压超过一定阈值后,电流迅速增加。
反向特性:反向电流很小,且随着反向电压的增加基本保持不变,直到达到反向击穿电压。
2、锗二极管正向特性:与硅二极管相比,正向导通电压较低。
反向特性:反向饱和电流较大。
(二)温度对二极管特性的影响随着温度升高,二极管的正向导通电压降低,反向饱和电流增大。
半导体材料_实验报告(3篇)
第1篇一、实验目的1. 熟悉半导体材料的性质,掌握半导体材料的制备方法。
2. 学习使用四探针法测量半导体材料的电阻率和薄层电阻。
3. 掌握半导体材料霍尔系数和电导率的测量方法。
4. 了解太阳能电池的工作原理,并进行性能测试。
二、实验原理1. 半导体材料:半导体材料具有介于导体和绝缘体之间的电导率,其电导率受温度、掺杂浓度等因素影响。
本实验所用的半导体材料为硅(Si)。
2. 四探针法:四探针法是一种测量半导体材料电阻率和薄层电阻的常用方法。
通过测量电流在半导体材料中流过时,电压的变化,可以得到材料的电阻率和薄层电阻。
3. 霍尔效应:霍尔效应是一种测量半导体材料霍尔系数和电导率的方法。
当半导体材料中存在磁场时,载流子在运动过程中会受到洛伦兹力的作用,导致载流子在垂直于电流和磁场的方向上产生横向电场,从而产生霍尔电压。
4. 太阳能电池:太阳能电池是一种将光能转化为电能的装置。
本实验所用的太阳能电池为硅太阳能电池,其工作原理是光生电子-空穴对在PN结处分离,产生电流。
三、实验仪器与材料1. 实验仪器:四探针测试仪、霍尔效应测试仪、太阳能电池测试仪、数字多用表、温度计等。
2. 实验材料:硅(Si)半导体材料、太阳能电池等。
四、实验步骤1. 四探针法测量半导体材料电阻率和薄层电阻(1)将硅半导体材料切割成合适尺寸的样品。
(2)将样品放置在四探针测试仪上,按照仪器操作步骤进行测量。
(3)记录实验数据,计算电阻率和薄层电阻。
2. 霍尔效应测量半导体材料霍尔系数和电导率(1)将硅半导体材料切割成合适尺寸的样品。
(2)将样品放置在霍尔效应测试仪上,按照仪器操作步骤进行测量。
(3)记录实验数据,计算霍尔系数和电导率。
3. 太阳能电池性能测试(1)将硅太阳能电池放置在太阳能电池测试仪上。
(2)按照仪器操作步骤进行测试,记录实验数据。
(3)计算太阳能电池的短路电流、开路电压、填充因子等参数。
五、实验结果与分析1. 四探针法测量半导体材料电阻率和薄层电阻根据实验数据,计算得到硅半导体材料的电阻率和薄层电阻分别为:ρ =0.3Ω·m,Rt = 0.1Ω。
二叉树的遍历实验报告
二叉树的遍历实验报告一、实验目的1.了解二叉树的基本概念和性质;2.理解二叉树的遍历方式以及它们的实现方法;3.学会通过递归和非递归算法实现二叉树的遍历。
二、实验内容1.二叉树的定义在计算机科学中,二叉树是一种重要的数据结构,由节点及它们的左右儿子组成。
没有任何子节点的节点称为叶子节点,有一个子节点的节点称为一度点,有两个子节点的节点称为二度点。
二叉树的性质:1.每个节点最多有两个子节点;2.左右子节点的顺序不能颠倒,左边是父节点的左子节点,右边是父节点的右子节点;3.二叉树可以为空,也可以只有一个根节点;4.二叉树的高度是从根节点到最深叶子节点的层数;5.二叉树的深度是从最深叶子节点到根节点的层数;6.一个深度为d的二叉树最多有2^(d+1) -1个节点,其中d>=1;7.在二叉树的第i层上最多有2^(i-1)个节点,其中i>=1。
2.二叉树的遍历方式二叉树的遍历是指从根节点出发,按照一定的顺序遍历二叉树中的每个节点。
常用的二叉树遍历方式有三种:前序遍历、中序遍历和后序遍历。
前序遍历:先遍历根节点,再遍历左子树,最后遍历右子树;中序遍历:先遍历左子树,再遍历根节点,最后遍历右子树;后序遍历:先遍历左子树,再遍历右子树,最后遍历根节点。
递归算法:利用函数调用,递归实现二叉树的遍历;非递归算法:利用栈或队列,对二叉树进行遍历。
三、实验步骤1.创建二叉树数据结构并插入节点;2.实现二叉树的前序遍历、中序遍历、后序遍历递归算法;3.实现二叉树的前序遍历、中序遍历、后序遍历非递归算法;4.测试算法功能。
四、实验结果1.创建二叉树数据结构并插入节点为了测试三种遍历方式的算法实现,我们需要创建一个二叉树并插入节点,代码如下:```c++//定义二叉树节点struct TreeNode {int val;TreeNode* left;TreeNode* right;TreeNode(int x) : val(x), left(NULL), right(NULL) {}};递归算法是实现二叉树遍历的最简单方法,代码如下:```c++//前序遍历非递归算法vector<int> preorderTraversal(TreeNode* root) {stack<TreeNode*> s;vector<int> res;if (!root) return res;s.push(root);while (!s.empty()) {TreeNode* tmp = s.top();s.pop();res.push_back(tmp->val);if (tmp->right) s.push(tmp->right);if (tmp->left) s.push(tmp->left);}return res;}4.测试算法功能return 0;}```测试结果如下:preorderTraversal: 4 2 1 3 6 5 7inorderTraversal: 1 2 3 4 5 6 7postorderTraversal: 1 3 2 5 7 6 4preorderTraversalNonRecursive: 4 2 1 3 6 5 7inorderTraversalNonRecursive: 1 2 3 4 5 6 7postorderTraversalNonRecursive: 1 3 2 5 7 6 4本次实验通过实现二叉树的递归和非递归遍历算法,加深了对二叉树的理解,并熟悉了遍历算法的实现方法。
大学质谱仪实验报告总结(3篇)
第1篇一、实验背景与目的质谱仪实验作为一门现代分析化学的重要课程,旨在让学生了解质谱仪的基本原理、操作方法和应用领域。
本次实验旨在通过实际操作,使学生掌握质谱仪的基本操作技巧,提高分析能力,并了解质谱技术在化学、生物、医学等领域的广泛应用。
二、实验内容与方法1. 实验内容本次实验主要涉及以下内容:(1)质谱仪的结构与原理(2)质谱仪的操作流程(3)样品制备与进样(4)质谱数据采集与处理(5)质谱图解析与应用2. 实验方法(1)实验前准备:了解质谱仪的基本结构、原理和操作方法,熟悉实验流程。
(2)样品制备:根据实验要求,选择合适的样品制备方法,如液-液萃取、固相萃取等。
(3)进样:按照操作规程,将制备好的样品注入质谱仪。
(4)数据采集与处理:启动质谱仪,进行数据采集,并对数据进行初步处理。
(5)质谱图解析与应用:根据质谱图,分析样品的组成和结构,并探讨其在实际应用中的价值。
三、实验结果与分析1. 实验结果通过本次实验,我们成功获取了样品的质谱图,并对其进行了初步解析。
2. 实验分析(1)样品的组成分析:根据质谱图,可以识别出样品中的主要成分和杂质。
(2)样品的结构分析:通过质谱图中的碎片信息,可以推测样品的结构特征。
(3)实验误差分析:在实验过程中,可能存在一些误差,如进样误差、仪器误差等。
四、实验讨论与反思1. 实验讨论(1)质谱仪在实际应用中的优势:质谱仪具有高灵敏度、高分辨率、多元素同时分析等优点,在化学、生物、医学等领域具有广泛的应用。
(2)实验操作技巧:在实验过程中,要注意操作规范,避免误差的产生。
2. 实验反思(1)理论知识与实践操作相结合:本次实验使我们深刻体会到理论知识与实践操作的重要性。
(2)实验过程中存在的问题:在实验过程中,我们发现了一些问题,如进样不稳定、数据处理不准确等。
五、结论通过本次质谱仪实验,我们掌握了质谱仪的基本操作方法,提高了分析能力。
同时,我们认识到质谱技术在化学、生物、医学等领域的广泛应用,为今后的学习和研究奠定了基础。
补体实验报告
补体实验报告补体实验报告引言:补体是一种重要的免疫系统组分,它在机体抵御感染和清除病原体中起着关键作用。
为了深入了解补体的功能和机制,我们进行了一系列的补体实验。
本报告将对这些实验的设计、结果和意义进行详细阐述。
实验一:补体激活能力测试在本实验中,我们使用了补体激活能力测试来评估不同物质对补体活性的影响。
首先,我们准备了一系列溶液,包括正常人血清、不同浓度的抗原物质和不同浓度的抗体。
然后,我们将这些溶液与已知激活补体的物质进行反应,并使用特定的试剂盒检测补体活性。
实验结果显示,高浓度的抗原物质和抗体均能显著激活补体,而低浓度的抗原物质和抗体对补体的激活能力较弱。
这一实验结果表明,补体的激活受到物质浓度的影响。
实验二:补体降解能力测试为了进一步了解补体的功能,我们进行了补体降解能力测试。
在这个实验中,我们选择了一种已知能够激活补体的物质,并将其与不同浓度的补体混合。
随后,我们观察了补体在不同时间点的降解情况。
结果显示,补体在与激活物质接触后迅速降解,并在一定时间内完全消失。
这表明补体在抵御感染和清除病原体的过程中起到了重要的作用。
实验三:补体与细胞间的相互作用为了研究补体与细胞之间的相互作用,我们进行了一系列的细胞实验。
首先,我们选择了一种具有特定受体的细胞系,并将其与已知能够激活补体的物质接触。
随后,我们使用荧光显微镜观察细胞表面的补体结合情况。
结果显示,激活补体的物质能够与细胞表面的受体结合,形成补体-细胞复合物。
这一实验结果揭示了补体与细胞之间的相互作用机制,为进一步研究补体的功能提供了重要线索。
实验四:补体在炎症反应中的作用为了探究补体在炎症反应中的作用,我们进行了一系列的动物实验。
首先,我们选择了一种炎症模型动物,并注射了激活补体的物质。
随后,我们观察了动物体内炎症反应的程度和补体的活性变化。
实验结果显示,激活补体的物质能够显著增强动物体内的炎症反应,并导致补体的活性明显上升。
这一实验结果揭示了补体在炎症反应中的重要作用,为炎症相关疾病的治疗提供了新的思路。
硫化物实验报告
硫化物实验报告一、实验目的本次实验旨在测定水样中硫化物的含量,并掌握硫化物测定的基本原理和实验操作方法。
二、实验原理在酸性条件下,水样中的硫化物与过量的碘溶液反应,剩余的碘用硫代硫酸钠标准溶液滴定,根据硫代硫酸钠溶液的用量,计算水样中硫化物的含量。
反应方程式如下:S²⁻+ I₂ → S + 2I⁻2Na₂S₂O₃+ I₂ → Na₂S₄O₆+ 2NaI三、实验试剂与仪器1、试剂盐酸溶液(1+1)碘标准溶液(01mol/L)硫代硫酸钠标准溶液(01mol/L)淀粉指示剂(5g/L)2、仪器250mL 碘量瓶25mL 移液管50mL 滴定管四、实验步骤1、水样预处理对于含有悬浮物或浑浊的水样,需进行过滤处理,以去除杂质。
若水样中硫化物含量较高,需进行适当稀释。
2、测定取 2500mL 处理后的水样于 250mL 碘量瓶中,加入 1000mL 碘标准溶液和 5mL 盐酸溶液,摇匀,密塞,暗处放置 5 分钟。
用硫代硫酸钠标准溶液滴定至溶液呈淡黄色,加入 2mL 淀粉指示剂,继续滴定至蓝色刚好消失,记录硫代硫酸钠标准溶液的用量。
3、空白实验用去离子水代替水样,按照上述步骤进行空白实验。
五、实验数据记录与处理1、数据记录水样体积(mL):_____碘标准溶液体积(mL):1000水样消耗硫代硫酸钠标准溶液体积(mL):_____空白消耗硫代硫酸钠标准溶液体积(mL):_____2、计算硫化物(S²⁻,mg/L)=(V₀ V₁)× c × 1603 × 1000 / V其中,V₀为空白实验消耗硫代硫酸钠标准溶液体积(mL);V₁为水样消耗硫代硫酸钠标准溶液体积(mL);c 为硫代硫酸钠标准溶液浓度(mol/L);V 为水样体积(mL);1603 为硫化物(1/2S²⁻)的摩尔质量(g/mol)。
六、实验结果与讨论1、实验结果本次实验测得水样中硫化物的含量为_____mg/L。
查找实验报告
查找实验报告第一篇:查找实验报告实验六查找实验目的:掌握几种查找的思想及算法问题分析:(一)顺序查找 1.查找思想从表的一端开始逐个将记录的关键字和给定K值进行比较,若某个记录的关键字和给定K值相等,查找成功;否则,若扫描完整个表,仍然没有找到相应的记录,则查找失败。
2.算法实现int Seq_Search(SST able ST,int key){int p;} ST.data[0].key=key;/* 设置监视哨兵,失败返回0 */ for(p=ST.length;ST.data[p].key!=key;p--);return(p);3.算法分析设查找每个记录成功的概率相等,即Pi=1/n;查找第i个元素成功的比较次数Ci=n-i+1 ;◆ 查找成功时的平均查找长度ASL:◆包含查找不成功时:查找失败的比较次数为n+1,若成功与不成功的概率相等,对每个记录的查找概率为Pi=1/(2n),则平均查找长度ASL:(二)折半查找前提条件:查找表中的所有记录是按关键字有序(升序或降序)。
查找过程中,先确定待查找记录在表中的范围,然后逐步缩小范围(每次将待查记录所在区间缩小一半),直到找到或找不到记录为止。
1.查找思想用Low、High和Mid表示待查找区间的下界、上界和中间位置指针,初值为Low=1,High=n。
⑴取中间位置Mid:Mid=⎣(Low+High)/2⎦;⑵比较中间位置记录的关键字与给定的K值:①相等:查找成功;②大于:待查记录在区间的前半段,修改上界指针:High=Mid-1,转⑴ ;③小于:待查记录在区间的后半段,修改下界指针:Low=Mid+1,转⑴ ;直到越界(Low>High),查找失败。
2.算法实现int Bin_Search(SST able ST , KeyType k){int low=1,high=ST.length, mid;while(low<=high){mid=(low+high)/2;if(EQ(ST.data[mid].key, k))return(mid);else if(LT(ST.dat[mid].key, k))low=mid+1;else high=mid-1;}return(0);/*查找失败*/ } 3.算法分析①查找时每经过一次比较,查找范围就缩小一半,该过程可用一棵二叉树表示:◆根结点就是第一次进行比较的中间位置的记录;◆ 排在中间位置前面的作为左子树的结点;◆ 排在中间位置后面的作为右子树的结点;对各子树来说都是相同的。
聚铁实验报告
1. 了解聚铁实验的基本原理和操作步骤。
2. 掌握聚铁反应的实验条件和方法。
3. 分析聚铁反应的产物和性能。
二、实验原理聚铁实验是一种利用铁离子作为催化剂,通过聚合反应合成聚合物的方法。
该实验中,铁离子在碱性条件下与苯乙烯单体发生聚合反应,生成聚苯乙烯。
聚苯乙烯是一种具有良好力学性能和耐化学腐蚀性的高分子材料。
三、实验材料与仪器1. 实验材料:- 苯乙烯单体- 铁离子催化剂- 氢氧化钠- 蒸馏水- 柠檬酸- 乙醇2. 实验仪器:- 100mL圆底烧瓶- 电磁搅拌器- 恒温水浴锅- 分析天平- 真空泵- 烘箱- 精密移液器1. 准备溶液(1)称取适量的铁离子催化剂,加入50mL蒸馏水中,搅拌均匀。
(2)称取适量的氢氧化钠,加入50mL蒸馏水中,搅拌均匀。
(3)将上述两种溶液混合,搅拌均匀。
2. 添加单体(1)称取适量的苯乙烯单体,加入100mL圆底烧瓶中。
(2)将圆底烧瓶置于恒温水浴锅中,调节温度至60℃。
(3)向烧瓶中加入上述混合溶液,加入柠檬酸调节pH值至8.0。
3. 聚合反应(1)开启电磁搅拌器,搅拌速度为100r/min。
(2)观察反应过程中溶液的颜色变化,记录反应时间。
(3)当溶液颜色变为深棕色时,关闭电磁搅拌器,停止反应。
4. 分离产物(1)将反应后的溶液倒入烧杯中,加入适量的乙醇,搅拌均匀。
(2)使用真空泵将溶液中的苯乙烯单体蒸出。
(3)将剩余的产物在烘箱中干燥,得到聚苯乙烯。
五、实验结果与分析1. 实验结果通过实验,成功合成了聚苯乙烯。
反应过程中,溶液颜色由无色变为深棕色,表明发生了聚合反应。
干燥后的产物为淡黄色固体,具有良好的力学性能和耐化学腐蚀性。
2. 结果分析(1)聚铁实验中,铁离子作为催化剂,降低了反应活化能,提高了聚合反应速率。
(2)柠檬酸调节pH值至8.0,有利于铁离子的稳定性和催化活性。
(3)反应过程中,溶液颜色变化可作为判断反应进程的指标。
六、实验结论1. 聚铁实验是一种合成聚苯乙烯的有效方法,具有操作简便、成本低廉、产物性能优良等优点。
蛋白生成实验报告
一、实验目的1. 学习蛋白质的生成过程,了解蛋白质合成的原理和机制。
2. 掌握实验操作技能,包括DNA模板制备、逆转录、PCR扩增、蛋白质提取和检测等。
3. 通过实验验证蛋白质合成过程中各步骤的正确性。
二、实验原理蛋白质合成是生物体中最基本的生命活动之一,它涉及DNA转录为mRNA,mRNA翻译为蛋白质的复杂过程。
本实验通过以下步骤进行蛋白质生成:1. DNA模板制备:从细胞中提取DNA作为模板。
2. 逆转录:利用逆转录酶将DNA模板逆转录为cDNA。
3. PCR扩增:利用PCR技术扩增cDNA,得到大量目的基因片段。
4. 蛋白质提取:从细胞中提取蛋白质,并进行SDS-PAGE电泳分离。
5. 蛋白质检测:通过Western blot技术检测目的蛋白的表达。
三、实验材料与仪器1. 实验材料:- 细胞样品- DNA提取试剂盒- 逆转录试剂盒- PCR试剂盒- 蛋白质提取试剂盒- Western blot试剂盒- 电泳仪- 凝胶成像系统- 酶标仪2. 实验仪器:- 离心机- 热水浴- PCR仪- 热循环仪- 微量移液器- 恒温水浴箱四、实验步骤1. DNA模板制备:- 提取细胞样品中的DNA。
- 使用DNA提取试剂盒进行DNA纯化。
2. 逆转录:- 将纯化的DNA与逆转录酶、dNTPs、随机引物等试剂混合。
- 在热循环仪中进行逆转录反应。
3. PCR扩增:- 设计特异性引物,针对目的基因片段。
- 将逆转录产物与PCR试剂混合,进行PCR扩增。
- 通过凝胶成像系统检测PCR产物。
4. 蛋白质提取:- 提取细胞样品中的蛋白质。
- 使用蛋白质提取试剂盒进行蛋白质纯化。
5. SDS-PAGE电泳分离:- 将蛋白质样品与SDS-PAGE试剂混合。
- 进行SDS-PAGE电泳分离。
6. Western blot检测:- 将SDS-PAGE电泳后的蛋白质条带转印至NC膜上。
- 使用特异性抗体进行孵育。
- 通过酶标仪检测目的蛋白的表达。
标记硫蛋白实验报告
一、实验目的1. 掌握标记硫蛋白的方法和原理。
2. 学习使用荧光标记技术对蛋白质进行检测。
3. 了解硫蛋白在生物体内的功能及其在疾病研究中的应用。
二、实验原理硫蛋白是一种含硫氨基酸(如半胱氨酸)的蛋白质,其硫原子与蛋白质中的其他氨基酸残基形成二硫键,赋予其独特的生物学功能。
本实验通过荧光标记技术,对硫蛋白进行标记,便于其在荧光显微镜下观察和检测。
三、实验材料1. 硫蛋白样品2. 荧光标记试剂3. 荧光显微镜4. 试剂盒5. 实验器材:离心管、移液器、吸头、微量滴定板、移液器架等四、实验方法1. 样品制备(1)取适量硫蛋白样品,加入适量的缓冲液,制成蛋白质溶液。
(2)使用试剂盒检测样品中的蛋白质含量,以确保样品的纯度和浓度。
2. 荧光标记(1)取适量荧光标记试剂,加入适量的缓冲液,制成标记溶液。
(2)将硫蛋白样品与标记溶液混合,充分振荡,使标记试剂与蛋白质结合。
(3)在室温下孵育一定时间,使标记试剂与蛋白质充分结合。
(4)终止反应,将标记后的硫蛋白样品离心,收集上清液。
3. 荧光显微镜观察(1)将标记后的硫蛋白样品滴加在载玻片上,晾干。
(2)使用荧光显微镜观察标记后的硫蛋白,记录观察结果。
五、实验结果与分析1. 样品制备通过试剂盒检测,样品中的蛋白质含量为0.5mg/mL。
2. 荧光标记在荧光显微镜下观察,标记后的硫蛋白呈现出明显的荧光信号,证明标记成功。
3. 荧光显微镜观察在荧光显微镜下,可以清晰地观察到标记后的硫蛋白,说明标记后的硫蛋白在荧光显微镜下具有良好的可观察性。
六、实验讨论1. 标记硫蛋白的方法在本实验中取得了成功,为后续的荧光显微镜观察提供了便利。
2. 荧光标记技术在生物研究领域具有广泛的应用,可以用于检测和研究蛋白质的结构、功能及相互作用。
3. 硫蛋白作为一种特殊的蛋白质,其在生物体内的功能及其在疾病研究中的应用具有重要意义。
本实验为进一步研究硫蛋白提供了实验基础。
七、实验总结通过本次实验,我们掌握了标记硫蛋白的方法和原理,了解了荧光标记技术在生物研究中的应用。
标准基实验报告
一、实验目的1. 熟悉标准基的概念和分类。
2. 掌握标准基的制备方法。
3. 学习标准基的检验和评价方法。
二、实验原理标准基是指在一定条件下,能够与待测物质发生定量反应的基准物质。
在化学分析中,标准基用于测定待测物质的含量。
标准基分为酸性、碱性、氧化性和还原性标准基等。
三、实验材料与仪器1. 实验材料:氢氧化钠、硫酸、高锰酸钾、碘化钾、硫代硫酸钠等。
2. 仪器:分析天平、移液管、滴定管、锥形瓶、烧杯、玻璃棒等。
四、实验步骤1. 酸性标准基的制备(1)称取一定量的氢氧化钠固体,加入适量的蒸馏水溶解,转移到1000mL容量瓶中,用蒸馏水定容至刻度,配制成0.1mol/L的氢氧化钠溶液。
(2)用移液管准确量取25.00mL氢氧化钠溶液,转移到锥形瓶中,用硫酸滴定至终点。
(3)根据消耗的硫酸体积,计算出氢氧化钠的浓度。
2. 碱性标准基的制备(1)称取一定量的硫酸固体,加入适量的蒸馏水溶解,转移到1000mL容量瓶中,用蒸馏水定容至刻度,配制成0.1mol/L的硫酸溶液。
(2)用移液管准确量取25.00mL硫酸溶液,转移到锥形瓶中,用氢氧化钠滴定至终点。
(3)根据消耗的氢氧化钠体积,计算出硫酸的浓度。
3. 氧化性标准基的制备(1)称取一定量的高锰酸钾固体,加入适量的蒸馏水溶解,转移到1000mL容量瓶中,用蒸馏水定容至刻度,配制成0.02mol/L的高锰酸钾溶液。
(2)用移液管准确量取25.00mL高锰酸钾溶液,转移到锥形瓶中,用碘化钾滴定至终点。
(3)根据消耗的碘化钾体积,计算出高锰酸钾的浓度。
4. 还原性标准基的制备(1)称取一定量的硫代硫酸钠固体,加入适量的蒸馏水溶解,转移到1000mL容量瓶中,用蒸馏水定容至刻度,配制成0.1mol/L的硫代硫酸钠溶液。
(2)用移液管准确量取25.00mL硫代硫酸钠溶液,转移到锥形瓶中,用碘溶液滴定至终点。
(3)根据消耗的碘溶液体积,计算出硫代硫酸钠的浓度。
五、实验结果与分析1. 酸性标准基的制备实验消耗的硫酸体积为V1,根据公式C1V1=C2V2,计算出氢氧化钠的浓度为0.1mol/L。
研究蛋白的实验报告
一、实验目的1. 学习蛋白质提取的原理和方法。
2. 掌握蛋白质鉴定技术,包括电泳和Western blot。
3. 分析蛋白质提取效果,验证蛋白质鉴定结果的准确性。
二、实验原理蛋白质是生物体内重要的生物大分子,具有多种生物学功能。
蛋白质提取是将细胞内蛋白质从复杂的生物环境中分离出来的过程。
本实验采用酸碱沉淀法提取蛋白质,通过SDS-PAGE电泳和Western blot技术对提取的蛋白质进行鉴定。
三、实验材料与仪器1. 材料:大肠杆菌细胞、蛋白质提取试剂盒、抗体、底物、电泳凝胶、Western blot膜等。
2. 仪器:高速离心机、电泳仪、凝胶成像系统、Western blot成像系统等。
四、实验方法1. 蛋白质提取(1)将大肠杆菌细胞培养至对数生长期,收集细胞。
(2)加入适量细胞裂解液,冰浴破碎细胞。
(3)12,000 rpm离心10分钟,取上清液。
(4)加入等体积的2×SDS蛋白上样缓冲液,混匀。
(5)95℃煮沸5分钟,使蛋白质变性。
2. 电泳(1)制备10%的SDS-PAGE凝胶。
(2)将蛋白质样品与电泳缓冲液混合,上样至凝胶。
(3)在100V电压下电泳1小时。
(4)用凝胶成像系统观察电泳结果。
3. Western blot(1)将电泳后的凝胶转移至Western blot膜。
(2)用5%脱脂奶粉封闭膜2小时。
(3)加入一抗(针对目标蛋白的抗体),4℃孵育过夜。
(4)用TBST洗膜3次,每次10分钟。
(5)加入二抗(辣根过氧化物酶标记的抗体),室温孵育1小时。
(6)用TBST洗膜3次,每次10分钟。
(7)加入底物,避光显色。
(8)用凝胶成像系统观察Western blot结果。
五、实验结果与分析1. 电泳结果通过SDS-PAGE电泳,观察到目标蛋白在凝胶中迁移至预定位置,证明蛋白质提取成功。
2. Western blot结果Western blot结果显示,目标蛋白在膜上出现特异性条带,证明蛋白质鉴定成功。
血清铁检测实验报告
一、实验目的1. 掌握血清铁检测的原理和方法。
2. 了解血清铁水平与人体健康的关系。
3. 学会使用血清铁检测仪器进行实验操作。
二、实验原理血清铁检测是通过测定血清中铁的含量来判断人体铁营养状况的一种方法。
铁是人体必需的微量元素,参与血红蛋白、肌红蛋白、细胞色素等的合成。
血清铁含量与人体健康密切相关,过高或过低都会导致相应的疾病。
三、实验材料1. 仪器:血清铁检测仪器、微量移液器、离心机、恒温水浴箱等。
2. 试剂:铁试剂、显色剂、标准铁溶液、空白试剂等。
3. 样品:受试者血清。
四、实验方法1. 标准曲线的绘制:取不同浓度的标准铁溶液,分别加入显色剂,混匀后,在规定波长下测定吸光度。
以标准铁溶液浓度为横坐标,吸光度为纵坐标,绘制标准曲线。
2. 样品处理:取受试者血清,按照实验要求加入铁试剂,混匀后,在规定波长下测定吸光度。
3. 结果计算:根据样品的吸光度,从标准曲线上查得相应的铁含量,即为样品中的血清铁含量。
五、实验步骤1. 标准曲线的绘制:(1)取6个干净的试管,分别加入不同浓度的标准铁溶液。
(2)向每个试管中加入一定量的显色剂,混匀。
(3)将试管放入恒温水浴箱中,恒温反应一定时间。
(4)取出试管,用微量移液器取少量溶液,在规定波长下测定吸光度。
(5)重复上述步骤,得到不同浓度的标准铁溶液的吸光度。
(6)以标准铁溶液浓度为横坐标,吸光度为纵坐标,绘制标准曲线。
2. 样品处理:(1)取受试者血清,按照实验要求加入铁试剂,混匀。
(2)将试管放入恒温水浴箱中,恒温反应一定时间。
(3)取出试管,用微量移液器取少量溶液,在规定波长下测定吸光度。
(4)重复上述步骤,得到受试者血清中铁的含量。
3. 结果计算:(1)根据样品的吸光度,从标准曲线上查得相应的铁含量。
(2)计算样品中的血清铁含量。
六、实验结果与分析1. 标准曲线绘制结果:根据实验数据,绘制标准曲线,得到相关系数R²=0.998,表明标准曲线线性良好。
数据结构bst的构建与查找实验报告参考模板
HUNAN UNIVERSITY 课程实验报告题目:BST的构建与查找学生姓名:学生学号:专业班级:指导老师:李晓鸿老师完成日期:2014年11月22号一.需求分析输入形式在该程序中,用户需要输入节点个数和节点数据以及查找的节点,节点数据间使用空格隔开,当用户输入有误时提示用户输入错误并重新输入。
具体格式如下:请输入节点个数:请依次节点数据:请输入需查找的节点:输出形式若用户需查找的节点查找成功,则输出查找成功以及比较的次数,若查找不成功则输入查找失败,具体格式如下:查找成功,比较次数为__查找失败, 比较次数为__程序功能该程序可以通过使用二叉链表构建一个BST,并实现BST内节点的插入和查找功能测试数据1.请输入节点个数:8请依次节点数据:12,4,35,78,56,34,89,0请输入需查找的节点:89查找成功,比较次数为32.请输入节点个数:8请依次节点数据:12,4,35,78,56,34,89,0请输入需查找的节点:678查找失败,比较次数为33.请输入节点个数:c输入有误请重新输入4. 请输入节点个数:8请依次节点数据:12,4,35,78,56,&,89.3,A输入有误,请重新输入二.概要设计抽象数据类型1.在本程序中,需要对插入的节点进行检索,而BST的插入和检索的速率都是很高的,所以我们选用构建BST的方法来解决这项问题;2.由用户输入的节点个数及节点数据均为正整数,可使用整型数据进行存储,并构建一个BST存储这些节点数据;3.为了节约空间,使用二叉链表实现BST;4.为了能查询表中数据,定义一个二叉树节点类,其ADT设计如下:数据类型:整型数据数据关系:二叉树所对应的数据关系基本操作:int val() ; //返回结点的数值void setLeft(Node* ) ; //设置左结点void setRight(Node* ); //设置右结点Node* left()const; //返回左结点Node* right()const ;//返回右结点4.为了存储这些数据,构建一个二叉查找树,其ADT设计如下:数据类型:整型数据数据关系:二叉树所对应的数据关系基本操作:void clear();//初始化操作bool insert(const Elem&);//插入元素的操作bool find(const Elem&)const;//查找元素的操作算法基本思想该算法主要包括表的构建和查询两项:①在表的构建上,通过用户输入的数据,将第一个输入的节点数据存入根节点中,从第二个节点元素开始,与根节点数据进行比较,如果该元素大于根节点的值,则与根节点的右子节点相比较,若右子节点为空,则将该元素存入这个节点,若不为空,则将该右子节点视为根节点,重复上述步骤。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
HUNAN UNIVERSITY
课程实习报告
题目: BST 学生姓名
学生学号
专业班级
指导老师
完成日期
1.需求分析
利用二叉查找树(BST)实现一个动态查找表:
(1)输入的形式:输入要存储元素的个数n(正整数),n个元素的值(设为整数)和要查找元素的值;
(2)输出的形式:输出是否找到(查找成功\不成功)和查找时比较的次数(正整数);(3)程序所能达到的功能:要求输入用户设定个元素,再输入要查找的元素,输出是否找到和查找时比较的次数;
(4)测试数据:
输入:
8//BST的节点个数
34, 76, 45, 18, 26, 54, 92, 65 //8个数据
45//查找45
输出:查找成功 3 //返回成功和查找时比较的次数
34//查找34
输出:查找成功 1 //返回成功和查找时比较的次数
100//查找100
输出:查找不成功 3 //返回成功和查找时比较的次数概要设计
抽象数据类型的定义
ADT BST(二叉查找树)
数据对象:整数
数据关系:数据元素属于同一集合,是二叉树,如果对其做中序遍历呈递增序列
基本操作:
InitBST(int n);//构造并存储一个有n个元素的二叉查找树BST
*SearchBST(BSTree T,int key);//二叉查找树BST存在,key为和关键字类型相同的给定值insertBST(BSTree T, int e);//若BST中不存在关键字等于e.key的数据元素,则插入e到BST 中。
算法的基本思想
将输入的BST的元素用插入的方法存进BST中(由于BST中任何结点的左孩子小于该节点,右孩子大于该节点,所以用递归方法比较插入)。
判断输入要查找的元素是否在BST中(递归比较要查找的元素与当前元素的值的大小,若小于当前值,则查找其左子树;若大于,则查找其右子树),若在,则输出位置;若不在,则插入到BST中,并输出其位置。
主程序的流程
输入模块:输入二叉查找树的元素个数、元素的值,以及要查找的数
查找模块:判断该元素是否在二叉查找树中,若未找到,则插入到二叉查找树中。
输出模块:输出是否找到。
若找到,则输出位置;若未找到,则输出插入的位置。
各程序模块之间的层次(调用)关系
InitBST(int n):调用insertBST(BSTree T, int e)
*SearchBST(BSTree T,int key):调用*SearchBST(BSTree T,int key)
insertBST(BSTree T, int e):调用*SearchBST(BSTree T,int key)
2.详细设计
物理数据结构
class node { //结点类型
private:
int key;//关键字,范围是-32768~32767
node *lchild,*rchild;//左右孩子指针
public:
BSTree InitBST(int n);
BSTNode *SearchBST(BSTree T,int key);
BSTNode insertBST(BSTree T, int e);
} BSTNode;
BSTNode *BSTree;//BSTree是二叉排序树的类型
int n=0; //输入元素节点数为正整数,定义为int n,范围是0~32767
BSTree B;
B.key=1;//保证循环可以正常开始
算法的具体步骤;
1、BST的构建函数:
初始化BST,调用插入函数,用for循环使得输入的元素一个一个以插入的形式存入BST 中
BSTree InitBST(int n)
{ //输入一个结点序列,建立一棵二叉排序树,将根结点指针返回
BSTree T=NULL;//初始时T为空树
int key;
for(int i=0;i<n;i++)
{ cin>>key;//读入一个关键字
InsertBST(&T,key);//将key插入二叉排序树T
}//存入n个元素到BST中
return T;//返回建立的二叉排序树的根指针
} //BSTree
2、BST的查找函数:
若BST为空或者要查找的元素就是BST当前的元素值key,返回该树,即若T为空,查找失败;否则成功,返回找到的结点位置;
若输入的查找元素小于BST当前的元素值,则以递归的形式在左子树中继续查找;
若输入的查找元素大于BST当前的元素值,则以递归的形式在右子树中继续查找。
BSTNode *SearchBST(BSTree T,int key)
{ //在二叉排序树T上查找关键字为key的结点,成功时返回该结点位置,否则返回NULL if(T==NULL||key==T->key) //递归的终结条件
{
return T;//T为空,查找失败;否则成功,返回找到的结点位置
}
if(key<T->key)
return SearchBST(T->lchild,key);//在左子树中查找
else
return SearchBST(T->rchild,key);//继续在右子树中查找
} //SearchBST
3、BST的插入函数:
定义BST临时指针p和temp;P指向T,构建temp,使得其根节点值为要查找的元素,左右孩子为空。
若要查找的BST为空,则插入元素为根节点;
若要插入的元素小于当前元素,则被插结点为左孩子,返回TRUE;
若要插入的元素大于当前元素,则被插结点为右孩子,返回TRUE。
Status insertBST(BSTree T, int e)
{
BSTree *p = NULL, *temp = NULL;
temp = (B STree *)malloc(sizeof(BSTree));
temp->key= e;
temp->lchild = NULL;
temp->rchild = NULL;
if(temp == NULL)
return FALSE;
if(T == NULL)
T=temp;//被插结点为新的根节点;
p = T;
if(e < p->key)
{
p->lchild = temp; //被插结点temp为左孩子
return TRUE;
}
if(e > p->key)
{
p->rchild = temp; //被插结点temp为右孩子
return TRUE;
}
}
4、主函数:
输入BST中元素个数,调用插入函数存储BST中元素。
若输入要查找的元素不为0,则循环:输入要查找的元素,调用查找函数,若在BST找到该元素,则输出其位置;若未找到,则调用插入函数其插入到BST中,并返回其位置。
结束程序
int n=0;
BSTree B;
B.key=1;
cout<<"请输入元素个数:";
cin<<n;
cout<<"请输入"<<n<<"个元素的值:"<<endl;
InitBST(int n);
while(B.key)//设key=0时结束
{ cout<<"请输入要查找的元素(0:结束):";
cin>>B.key;
if(SearchBST(BSTree B,int B.key))
{ cout<<"查找成功: "<< SearchBST(BSTree B,int B.key)<<endl;//查找成功,输出位置
return TRUE;
}
else
{
if(insertBST(BSTree T, int e))
cout<<"未找到,插入到"<<SearchBST(BSTree B,int B.key)<<endl; n++;
}
return 0;
算法的时空分析和改进设想;
由于循环输入查找元素的时间复杂度为O(n),查找函数的时间复杂度为O(n),插入函数的时间复杂度为O(logn),而循环中套了2个查找函数一个插入函数或两个查找函数,所以,该程序的时间复杂度为O(logn*(n^3))。
输入和输出的格式。
请输入元素个数:等待输入
请输入n个元素的值:等待输入
请输入要查找的元素(0:结束):等待输入
查找成功:输出
请输入要查找的元素(0:结束):等待输入
未找到,插入到输出
请输入要查找的元素(0:结束):0
a)调试分析
由于递归调用的关系比较复杂,应理清层次后再写详细代码。
b)测试结果
请输入元素个数:8
请输入8个元素的值:34, 76, 45, 18, 26, 54, 92, 65
请输入要查找的元素(0:结束):45
查找成功: 3
请输入要查找的元素(0:结束):34
查找成功: 1
请输入要查找的元素(0:结束):100
未找到,插入到3
请输入要查找的元素(0:结束):0。