文档库 最新最全的文档下载
当前位置:文档库 › 北邮数据结构试验报告试验一线性表

北邮数据结构试验报告试验一线性表

北邮数据结构试验报告试验一线性表
北邮数据结构试验报告试验一线性表

数据结构实验报告全集

数据结构实验报告全集 实验一线性表基本操作和简单程序 1.实验目的 (1)掌握使用Visual C++ 6.0上机调试程序的基本方法; (2)掌握线性表的基本操作:初始化、插入、删除、取数据元素等运算在顺序存储结构和链表存储结构上的程序设计方法。 2.实验要求 (1)认真阅读和掌握和本实验相关的教材内容。 (2)认真阅读和掌握本章相关内容的程序。 (3)上机运行程序。 (4)保存和打印出程序的运行结果,并结合程序进行分析。 (5)按照你对线性表的操作需要,重新改写主程序并运行,打印出文件清单和运行结果 实验代码: 1)头文件模块 #include iostream.h>//头文件 #include//库头文件-----动态分配内存空间 typedef int elemtype;//定义数据域的类型 typedef struct linknode//定义结点类型 { elemtype data;//定义数据域 struct linknode *next;//定义结点指针 }nodetype; 2)创建单链表

nodetype *create()//建立单链表,由用户输入各结点data域之值,//以0表示输入结束 { elemtype d;//定义数据元素d nodetype *h=NULL,*s,*t;//定义结点指针 int i=1; cout<<"建立一个单链表"<> d; if(d==0) break;//以0表示输入结束 if(i==1)//建立第一个结点 { h=(nodetype*)malloc(sizeof(nodetype));//表示指针h h->data=d;h->next=NULL;t=h;//h是头指针 } else//建立其余结点 { s=(nodetype*) malloc(sizeof(nodetype)); s->data=d;s->next=NULL;t->next=s; t=s;//t始终指向生成的单链表的最后一个节点

光通信实验报告

竭诚为您提供优质文档/双击可除 光通信实验报告 篇一:光通信实验报告 信息与通信工程学院 光纤通信实验报告 班姓学 级:名:号: 班内序号:17 日 期:20XX年5月 一、oTDR的使用与测量 1、实验原理 oTDR使用瑞利散射和菲涅尔反射来表征光纤的特性。瑞利散射是由于光信号沿着光纤产生无规律的散射而形成。oTDR就测量回到oTDR端口的一部分散射光。这些背向散射信号就表明了由光纤而导致的衰减(损耗/距离)程度。形成的轨迹是一条向下的曲线,它说明了背向散射的功率不断减小,这是由于经过一段距离的传输后发射和背向散射的信

号都有所损耗。 给定了光纤参数后,瑞利散射的功率就可以标明出来,如果波长已知,它就与信号的脉冲宽度成比例:脉冲宽度越长,背向散射功率就越强。瑞利散射的功率还与发射信号的波长有关,波长较短则功率较强。也就是说用1310nm信号产生的轨迹会比1550nm信号所产生的轨迹的瑞利背向散射要高。 在高波长区(超过1500nm),瑞利散射会持续减小,但另外一个叫红外线衰减(或吸收)的现象会出现,增加并导致了全部衰减值的增大。因此,1550nm是最低的衰减波长;这也说明了为什么它是作为长距离通信的波长。很自然,这些现象也会影响到oTDR。作为1550nm波长的oTDR,它也具有低的衰减性能,因此可以进行长距离的测试。而作为高衰减的1310nm或1625nm波长,oTDR的测试距离就必然受到限制,因为测试设备需要在oTDR轨迹中测出一个尖锋,而且这个尖锋的尾端会快速地落入到噪音中。 菲涅尔反射是离散的反射,它是由整条光纤中的个别点而引起的,这些点是由造成反向系数改变的因素组成,例如玻璃与空气的间隙。在这些点上,会有很强的背向散射光被反射回来。因此,oTDR就是利用菲涅尔反射的信息来定位连接点,光纤终端或断点。 oTDR的工作原理就类似于一个雷达。它先对光纤发出一

数据结构实验一题目一线性表实验报告

北京邮电大学电信工程学院 数据结构实验报告 实验名称:实验1——线性表 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 1、实验目的:熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法 学习指针、模板类、异常处理的使用 掌握线性表的操作的实现方法 学习使用线性表解决实际问题的能力 2、实验内容: 题目1: 线性表的基本功能: 1、构造:使用头插法、尾插法两种方法 2、插入:要求建立的链表按照关键字从小到大有序 3、删除 4、查找 5、获取链表长度 6、销毁 7、其他:可自行定义 编写测试main()函数测试线性表的正确性。 2. 程序分析 2.1 存储结构 带头结点的单链表

2.2 关键算法分析 1.头插法 a、伪代码实现:在堆中建立新结点 将x写入到新结点的数据域 修改新结点的指针域 修改头结点的指针域,将新结点加入链表中b、代码实现: Linklist::Linklist(int a[],int n)//头插法 {front=new Node; front->next=NULL; for(int i=n-1;i>=0;i--) {Node*s=new Node; s->data=a[i]; s->next=front->next; front->next=s; } } 2、尾插法

a、伪代码实现:a.在堆中建立新结点 b.将a[i]写入到新结点的数据域 c.将新结点加入到链表中 d.修改修改尾指针 b、代码实现: Linklist::Linklist(int a[],int n,int m)//尾插法 {front=new Node; Node*r=front; for(int i=0;idata=a[i]; r->next=s; r=s; } r->next=NULL; } 时间复杂度:O(n) 3、按位查找 a、伪代码实现: 初始化工作指针p和计数器j,p指向第一个结点,j=1 循环以下操作,直到p为空或者j等于1 b1:p指向下一个结点 b2:j加1 若p为空,说明第i个元素不存在,抛出异常 否则,说明p指向的元素就是所查找的元素,返回元素地址 b、代码实现 Node* Linklist::Get(int i)//得到指向第i个数的指针 {Node*p=front->next; int j=1; while(p&&j!=i)//p非空且j不等于i,指针后移 {p=p->next; j++;

光纤基本特性测试实验报告

实验报告 课程名称: 光通信技术实验 指导老师: 成绩:__________________ 实验名称:光纤基本特性测试(一)实验类型: 基础型 同组学生姓名: 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得 实验1-2 光纤数值孔径性质和测量 一、实验目的和要求 1、熟悉光纤数值孔径的定义和物理意义 2、掌握测量光纤数值孔径的基本方法 二、实验内容和原理 光纤数值孔径(NA )是光纤能接收光辐射角度范围的参数,同时它也是表征光纤和光源、光检测器及其它光纤耦合时的耦合效率的重要参数。图一表示阶梯多模光纤可接收的光锥范围。因此光纤数值孔径就代表光纤能传输光能的大小,光纤的NA 大,传输能量本领大。 NA 的定义式是: 式中n0 为光纤周围介质的折射率,θ为最大接受角。n1和n2分别为光纤纤芯和包层的折射率。光纤在均匀光场下,其远场功率角分布与理论数值孔径NAm 有如下关系: 其中θ是远场辐射角,Ka 是比例因子,由下式给出: 专业: 姓名: 学号: 日期: 地点: 装 订 线

式中P(0)与P(θ)分别为θ= 0和θ=θ处远场辐射功率,g 为光纤折射率分布参数。计算结果表明,若取P(θ) / P(0) = 5%,在g≥2时Ka的值大于0.975。因此可将P(θ)曲线上光功率下降到 θ的正弦值定义为光纤的数值孔径,称之为有效数值孔径: 中心值的5%处所对应的角度 e 本实验正是根据上述原理和光路可逆原理来进行的。 三、主要仪器设备 He-Ne 激光器、读数旋转台、塑料光纤、光纤微调架、毫米尺、白屏、短波长光功率计一套(功率显示仪1件、短波光探测器1只)。 四、实验步骤 方法一:光斑法测量(如图2) 1、实验系统调整; a.调整He-Ne激光管,使激光束平行于实验平台面; b.调整旋转台,使He-Ne激光束通过旋转轴线; c.放置待测光纤在光纤微调架上,使光纤一端与激光束耦合,另一端与短波光探测器正确连接; d.仔细调节光纤微调架,使光纤端面准确位于旋转台的旋转轴心线上,并辅助调节旋转台使光纤的输出功率最大。 2、测输出数值孔径角θo。 a. 移开光探测器,固定光纤输出端; b. 分别置观察屏于距光纤端面L1、L2 距离处,测量观察屏上的光纤输出圆光斑直径D1、D2,计算两次读数差ΔL和ΔD,得输出孔径角为:θo=arctan[ΔD/(2ΔL)]; c. 多次测量求平均值。(注:如果圆光斑边界不清晰,一般是由于出射光功率太强引起的,适当旋转读数台减小耦合效率,直至得到一个清晰圆光斑为止。)

数据结构线性表实验报告

序号 数据结构实验报告 班级姓名同组者/ 成绩 日期 3.9指导教师 实验名称实验一线性表及其应用 一、实验目的 1、深刻理解线性表的逻辑特性及其顺序、链式存储方式的特点。 2、熟练掌握线性表的常用操作(建立、插入、删除、遍历等)在顺序、链式存储上的实现。 3、加深对C/C++等编程语言的相关知识点的理解(如结构体、指针、函数、引用参数等)。 二、实验内容 1、根据给定的整型数组,以尾插法建立一个单链表,并实现以下操作: ①查找:输入一个欲查找的整数,找到则显示第一个相匹配的整数在单链表中所处的位置,若不存在,则显示提示信息。 ②删除:输入一个欲删除的整数e ,若存在则在单链表中删除第一个值为 e 的元素。 ③插入:输入一个欲插入位置i 和欲插入元素e,将e 插入到第i 个整数之前(注意i 的合法性)。 A、算法思想 ①创建 head 为头结点指针,初始时head->next 为NULL ;tail 始终指向当前链表的最后一个元素,其初始时指向头结点;p 始终指向每次申请的新结点,修改p->data 为当前读入的整数;修改tail->next 为p ,修改tail 为p ;最后修改tail->next 为NULL ,。 ②插入 找到插入点的前驱(即第i-1 个结点)的指针p ;s 指向新申请的结点;修改s->data 为参数e,修改s->next 为p->next ,修改p->next 为s 。 ③查找 ……利用p进行遍历,直到节点的数据和所给的数据相同,输出节点的位置 ④删除 ……利用p进行遍历,并总是将p的前一节点的指针赋给pre,一旦找到,则删除节点并

退出循环,没有到话,反馈相关信息 B、算法源码 /* *线性表及其应用 */ #include using namespace std; typedef struct _LinkList { int elem; struct _LinkList* next; }LinkList; void InitList(LinkList *&link );//构造一个含有头结点的链表 bool InsertList(LinkList *&link,int i,int e);//在第i个位置之前插入包含元素e的新节点void GetTailPointer(LinkList *link,LinkList *&tail);//获得单链表尾结点指针 void AddList(LinkList *&link,int e);//根据将e以尾插法插入链表 void DisplayList(LinkList *link);//打印静态链表中的所有数据 void LocatedList(LinkList *link,int e);//查找e的位置 void DeleteList(LinkList *&link,int e);//删除所在节点 void MergeList(LinkList *linka,LinkList *linkb,LinkList *&linkc);//归并 void InitList(LinkList *&link )//构造一个含有头结点的链表 { LinkList *L,*head; head = (LinkList *)malloc(sizeof(LinkList)); head -> next = NULL; L = head; link = L; } void AddList(LinkList *&link,int e)//根据将e以尾插法插入链表 { LinkList *p =NULL; p =(LinkList *)malloc(sizeof(LinkList)); p -> elem = e; p->next = NULL; LinkList *tail = link;

数据结构_实验1_线性表的基本操作

实验1 线性表的基本操作 一、需求分析 目的: 掌握线性表运算与存储概念,并对线性表进行基本操作。 1.初始化线性表; 2.向链表中特定位置插入数据; 3.删除链表中特定的数据; 4.查找链表中的容; 5.销毁单链表释放空间; 二、概要设计 ●基础题 主要函数: 初始化线性表InitList(List* L,int ms) 向顺序表指定位置插入元素InsertList(List* L,int item,int rc)删除指定元素值的顺序表记录DeleteList1(List* L,int item) 删除指定位置的顺序表记录 DeleteList2(List* L,int rc) 查找顺序表中的元素 FindList(List L,int item) 输出顺序表元素OutputList(List L) 实验步骤: 1,初始化顺序表 2,调用插入函数 3,在顺序表中查找指定的元素 4,在顺序表中删除指定的元素 5,在顺序表中删除指定位置的元素 6,遍历并输出顺序表 ●提高题

要求以较高的效率实现删除线性表中元素值在x到y(x和y自定义)之间的所有元素 方法: 按顺序取出元素并与x、y比较,若小于x且大于y,则存进新表中。 编程实现将两个有序的线性表进行合并,要求同样的数据元素只出现一次。 方法: 分别按顺序取出L1,L2的元素并进行比较,若相等则将L1元素放进L中,否则将L 1,L2元素按顺序放进L。 本程序主要包含7个函数 主函数main() 初始化线性表InitList(List* L,int ms) 向顺序表指定位置插入元素InsertList(List* L,int item,int rc)删除指定元素值的顺序表记录DeleteList1(List* L,int item) 删除指定位置的顺序表记录 DeleteList2(List* L,int rc) 查找顺序表中的元素 FindList(List L,int item) 输出顺序表元素OutputList(List L) 提高题的程序 void Combine(List* L1,List* L2,List* L) void DeleteList3(List* L,int x,int y) 二、详细设计 初始化线性表InitList(List* L,int ms) void InitList(List* L,int ms) { L->list=(int*)malloc(LIST_INIT_SIZE*sizeof(int)); L->size=0; L->MAXSIZE=LIST_INIT_SIZE;

光通信技术实验报告

光通信技术实验报告 实验一光通讯系统WDM系统设计 实验目的 1.熟悉Optisystem实验环境,练习使用元件库中的常用元件组建光纤通信系统。 2.使用OptiSystem模拟仿真WDM系统的各项性能参数,并进行分析。 实验原理 光波分复用系统简介 光波分复用是指将两种或多种各自携带有大量信息的不同波长的光载波信号,在发射端经复用器汇合,并将其耦合到同一根光纤中进行传输,在接收端通过解复用器对各种波长的光载波信号进行分离,然后由光接收机做进一步的处理,使原信号复原,这种复用技术不仅适用于单模或多模光纤通信系统,同时也适用于单向或双向传输。 波分复用系统的工作波长可以从0.8μm到1.7μm,由此可见,它可以适用于所有低衰减、低色散窗口,这样可以充分利用现有的光纤通信线路,提高通信能力,满足急剧增长的业务需求。 WDM光通信结构组成 1)滤波器:在WDM系统中进行信道选择,只让特定波长的光通过,并组织其他光波长 通过。可调谐光滤波器能从众多的波长中选出某个波长让其通过。在WDM系统的光接收机中,为了选择所需的波长,一般都需依赖于其前端的可调谐滤波器。要求其有宽的谱宽以传输需要的全部信号谱成分,且带宽要窄以减小信道间隔。 2)复用器/解复用器(MUX/DEMUX):将多个光波长信号耦合到一路信道中,或使混合 的信号分离成单个波长供光接收机处理。一般,复用/解复用器都可以进行互易,其结构基本是相同的。实际上即是一种波长路由器,使某个波长从指定的输入端口到一个指定的输出端口。 实验软件介绍 OptiSystem是一款创新的光通讯系统模拟软件包,它集设计、测试和优化各种类型宽带光网络物理层的虚拟光连接等功能于一身,从长距离通讯系统到LANS和MANS都使用。一个基于实际光纤通讯系统模型的系统级模拟器,OptiSystem具有强大的模拟环境和真实的

数据结构线性表实验报告

《数据结构》实验报告 专业: 学号: 姓名: 实验二线性表 【实验目的】 1.熟悉VC环境,学习如何使用C语言实现线性表的两种存储结构。 2.通过编程、上机调试,进一步理解线性表的基本概念,东运用C语言实现线性表基本操作。 3.熟练掌握线性表的综合应用问题。 【实验内容】 1、一个线性表有n个元素(n-MAXSIZE.MAXSIZE指线性表的最大长度),且递增有。现有一元素x要插入到线性表的适当位置上,并保持线性表原有的顺序不变。设计程序实现。要求:采用顺序存储表示实现;采用链式存储表示方法实现:比较两种方法的优劣。 2.从单链表中删除指定的元素x,若x在单链表中不存在,给出提示信息。 要求: ①指定的值x由键盘输入; ②程序能处理空链表的情况。 3.设有头结点的单链表,编程对表中的任意值只保留一个结点,删除其余值相同的结点。 要求: ①该算法用函数(非主函数)实现; ②在主函数中调用创建链表的函数创建一个单链表,并调用该函数,验证算法的正确性。LinkedList Exchange(LinkedList HEAD,p) //HEAD是单链表头结点的指针,p是链表中的一个结点。本算法将p所指结点与其后 继结点交换。 (q=head->next;//q是工作指针,指向链表中当前待处理结点。 pre=head;//pre是前驱结点指针,指向q的前驱。 while(q'=null &&q1=p)(pre=q;q=q->next;]/未到p结点,后移指针。 if(p->next==null)printf(“p无后继结点\n”);/p是链表中最后一个结点,无后继。 else/处理p和后继结点交换 (q=p->next;//暂存p的后继。 pre->next=q://p前驱结点的后继指向p的后继。 p->next=q->next;//p的后继指向原p后继的后继。 q->next=p://原p后继的后继指针指向p。} }//算法结束。 4.已知非空单链表第一个结点由head指出,请写一算法,交换p所指结点与其下一个结点在链表中的位置。 要求:

红外通信收发系统的设计和实现实验报告

红外通信收发系统的设计和实现实验报告学院:信息与通信工程学院 姓名: 班级: 学号:

红外通信收发系统的设计和实现实验报告 1、课题名称 红外通信收发系统的设计与实现 2、摘要 红外通信系统的设计是光通信系统的一个重要分支,红外数据传输,使用传输介质――红外线。红外线是波长在750nm~1mm之间的电磁波,是人眼看不到的光线。红外数据传输一般采用红外波段内的近红外线,波长在0.75~25um之间。本实protel软件辅助设计,分析并设计了红外通信系统的发射电路与接收电路,实现了红外信号的无线传输功能和音乐信号的收发功能。 3、关键词 红外线、收发系统、音乐芯片 3、设计任务要求; 1、基本要求: (1)设计一个正弦波振荡器,f≥1kHz,Uopp≥3v; (2)所设计的正弦波振荡器的输出信号作为红外光通信收发系统发送端的输入信号,在接收端可收到无明显失真的输入信号; (3)要求接收端LM386增益设计G=200; (4)设计该电路的电源电路(不要求实际搭建),用软件绘制完整的电路原理图(PROTEL)及印制电路板图(PCB) 2、提高要求: 利用音乐芯片产生乐曲,调制LED后发出,接收端接收信号利用喇叭将发送的乐曲无失真的播放出来。 3、探究环节: 探索其它红外光通信收发系统的应用实例,数字调制的解决的方案,给出应用方案。 4、设计思路、总体结构框图;

1、设计思路 系统主要由信号产生电路,红外光发射系统,红外光接收系统三个模块完成基本实验要求,其中信号产生电路分别由信号发生器和音乐芯片代替,电信号经过发生系统转化为红外光信号,经接收系统接受后,光信号转化为电信号,再通过喇叭将其转化为语音信号,实现红外光通信的全过程。 首先主要用信号发生器发出电信号,微弱的电信号经过一个分压式共射电路适当放大,并通过LED红外发送管转化为光信号发送。 信号经接收管接收后,通过运放电路得到较高的输出功率,驱动喇叭发出声音。利用放大器LM386,调节电位器改变其增益,驱动喇叭得到所需功率。再将音乐芯片替代信号发生器重复上述过程即可驱动喇叭发出音乐芯片的声音(此实验为三声门铃声) 2.总体框架图 1、信号的产生 实验中使用了音乐芯片KD-9300或者LX-9300来完成。信号产生也可以使用RC振荡器构成,但信号的幅度不宜过大。 2、红外光发送模块的设计 设计原则主要是考虑红外发送管的工作电流,电流过小,传输距离短,电流过大容易毁坏发光管。(要注意芯片的接法以及发送电路的连接。) 3、红外光接收模块的设计 1)高通滤波器:红外接收的二极管都是光敏二极管,这样普通光对其都成一定程度的影响,为了获得更好的效果,还要在信号输出端加入高通滤波器,消除恒定的外接低频信号的干扰,这样接收效果和灵敏度将显著提高。 2)功率放大器:利用音频功率专用放大器LM386,可以得到50~200的增益,确保驱动喇叭。 所以设计框图如下 光通信收发系统原理图

哈工大 数据结构 实验一 线性表的实验

哈尔滨工业大学计算机科学与技术学院 实验报告 课程名称:数据结构与算法 课程类型:必修 实验项目名称:线性表实验 实验题目:算术表达式求值 班级:0903201 学号:1090320110 姓名:王岳

一、实验目的 二、实验要求及实验环境 三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系) 1.逻辑设计 2.物理设计 四、测试结果 五、系统不足与经验体会 六、附录:源代码(带注释) #include using namespace std; template class stack{ private: elementtype ss[512]; int top; public: stack() { this -> top =0; } void null() { this -> top =0; } bool empty() { if (this -> top ==0) return true; else return false; } elementtype pop() { if (this -> empty()) printf("error:empty!!!\n");

else { this -> top--; return this -> ss[this -> top + 1]; } } void push(elementtype x) { if (this -> top == 511) printf("error:full!!!\n"); else { this -> top++; this -> ss[this -> top] = x; } } }; void change(int &i,int &j,double *a,char *input,stack &s){//change front to back char o,p; bool fu=true; while(true){ o=cin.peek(); if((o<'('||o>'9')&&o!='\n') {o=getchar();fu=false; continue;} else if(o>='0'&&o<='9') {scanf("%lf",&a[i]); input[j]=i+'0';i++;j++; } else if(o=='(') {o=getchar();s.push(o);fu=true;continue;} else if(o==')') { o=getchar(); for(;!s.empty();){ input[j]=s.pop();j++; if(input[j-1]=='(') {j--;break;} } } else if(o=='*'||o=='/'){ o=getchar(); for(;!s.empty();){ p=s.pop(); if(p=='*'||p=='/') {input[j]=p;j++;} else {s.push(p);break;} } s.push(o); } else if(o=='+'||o=='-'){ o=getchar(); if(fu) {a[i]=0;input[j]=i+'0';i++;j++;} for(;!s.empty();){ p=s.pop(); if(p!='(') {input[j]=p;j++;} else {s.push(p);break;}

光纤通信实验报告

光纤通信实验报告 班级:14050Z01 姓名:李傲 学号:1405024239

实验一光发射机的设计 一般光发送机由以下三个部分组成: 1)光源(Optical Source):一般为LED和LD。 2)脉冲驱动电路(Electrical Pulse Generator):提供数字量或模拟量的电信号。 3)光调制器(Optical Modulator):将电信号(数字或模拟量)“加载”到光波上。以 光源和调制器的关系来看,分为光源的内调制(图1.1)和光源的外调制(图1.2)。 采用外调制器,让调制信息加到光源的直流输出上,可获得更好的调制特性、更好的调制速率。目前常采用的外调制方法为晶体的电光、声光及磁光效应。图1.2的结构中,光源为频率193.1Thz 的激光二极管,同时我们使用一个Pseudo-Random Bit Sequence Generator模拟所需的数字信号序列,经过一个NRZ脉冲发生器(None-Return-to-Zero Generator)转换为所需要的电脉冲信号,该信号通过一个Mach-Zehnder调制器,通过电光效应加载到光波上,成为最后入纤所需的载有“信息”的光信号。 图1.1内调制光发射机图1.2外调制光发射机 对于直接强度调制状态下的单纵模激光器,其载流子浓度的变化是随注入电流的变化而变化。这样使有源区的折射率指数发生变化,从而导致激光器谐振腔的光通路长度相应变化,结果致使振荡波长随时间偏移,导致所谓的啁啾现象。啁啾是高速光通讯系统中一个十分重要的物理量,因为它对整个系统的传输距离和传输质量都有关键的影响。 内容:铌酸锂(LiNbO3)型Mach-Zehnder调制器中的啁啾(Chirp)分析 1设计目的 对铌酸锂Mach-Zehnder调制器中的外加电压和调制器输出信号啁啾量的关系进行模拟和分析,从而决定具体应用中MZ调制器的外置偏压的分布和大小。 2设计布局图 外调制器由于激光光源处于窄带稳频模式,可以降低或者消除系统的啁啾量。典型的外调制器是由铌酸锂(LiNO3)晶体构成。本设计中,通过对该晶体外加电压的分析调整而最终减少该光发送机中的啁啾量,其模型的设计布局图如图1.3所示。

《数据结构》实验一 线性表及其应用

实验一线性表及其应用 一、实验目的 1.熟悉C语言的上机环境,进一步掌握C语言的结构特点。 2.掌握线性表的顺序存储结构的定义及C语言实现。 3.掌握线性表的链式存储结构——单链表的定义及C语言实现。 4.掌握线性表在顺序存储结构即顺序表中的各种基本操作。 5.掌握线性表在链式存储结构——单链表中的各种基本操作。 二、实验内容 1.顺序线性表的建立、插入及删除。 2.链式线性表的建立、插入及删除。 三、实验步骤 1.建立含n个数据元素的顺序表并输出该表中各元素的值及顺序表的长度。 2.利用前面的实验先建立一个顺序表L={21,23,14,5,56,17,31},然后在第i个位置插入元素68。 3.建立一个带头结点的单链表,结点的值域为整型数据。要求将用户输入的数据按尾插入法来建立相应单链表。 四、实现提示 1.由于C语言的数组类型也有随机存取的特点,一维数组的机内表示就是顺序结构。因此,可用C语言的一维数组实现线性表的顺序存储。 在此,我们利用C语言的结构体类型定义顺序表: #define MAXSIZE 1024 typedef int elemtype; /* 线性表中存放整型元素*/ typedef struct { elemtype vec[MAXSIZE]; int len; /* 顺序表的长度*/ }sequenlist; 将此结构定义放在一个头文件sqlist.h里,可避免在后面的参考程序中代码重复书写,另外在该头文件里给出顺序表的建立及常量的定义。 2. 注意如何取到第i个元素,在插入过程中注意溢出情况以及数组的下标与位序(顺序表中元素的次序)的区别。 3.单链表的结点结构除数据域外,还含有一个指针域。用C语言描述结点结构如下: typedef int elemtype; typedef struct node

数据结构实验一 实验报告

班级::学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入和删除等。 二、实验容 定义一个包含学生信息(学号,,成绩)的顺序表和链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据进行查找,返回此学生的学号和成绩; (4) 根据指定的位置可返回相应的学生信息(学号,,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2

typedef int Status; // 定义函数返回值类型 typedef struct { char num[10]; // 学号 char name[20]; // double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK;

北邮光纤实验报告

北京邮电大学 光纤通信实验 实验报告实验名称:脉冲展宽法测量多模光纤带宽学院:信息与通信工程学院 班级: 姓名: 学号: 老师:

本实验采用脉冲展宽法进行多模光纤带宽的测量。多模光纤脉冲展宽测试仪原理如下: 如图所示为多模光纤时域法带宽测试原理框图。从光发模块输出窄脉冲信号,首先使用跳线(短光纤)连接激光器和光检测器,可以测出注入窄脉冲的宽度1τ? ;然后将待测光纤替换跳线接入,可以测出经待测光纤后的脉冲宽度2τ?。经过理论推导可以得到求解带宽公式: )B GHz 多模光纤脉冲展宽测试仪如下图所示。前面板接口分上下两层。上层用于测试,下层为。 每个波长分别由窄脉冲发生器输出极窄光脉冲经被测光纤回到测试仪内进行变换后送出电信号,通过高速示波器即可显示。 图 1 多模光纤脉冲展宽测试仪

2.1 窗口下光纤带宽 (1) 打开测试仪电源开关(位于背面),前面板上的电源指示灯亮; (2) 将示波器输入端与本仪器的“”输出端用信号线接好; (3) 用一根光纤跳线将的 “”和“”连接起来,如下 图所示: (4) 进行示波器操作: A. 按键调出波形; B. 点击键,并通过右下方旋钮调整脉冲至适当宽度(一般设置为); C. 点击t ?、V ?键,显示屏右方会出现V ?、V ?选框,先通过右侧对应按键将V ?设 为,分别调节和测出脉冲高度并找出脉冲半高值;再将V ?设为,分别调节 使其与脉冲半高值相交。则有即为脉冲半高全宽1τ。 D. 换下该光纤跳线,接入待测光纤用同样方法测出2τ(此时宽度最好设为,观察的更 为明显)。 如下图所示:

(5)计算工作: 根据以下公式得到脉冲响应宽度: 根据以下公式得到待检测光纤带宽B: 2.2窗口下光纤带宽 与窗口下测试不同的是,应选择区域内的“”,“”,“”口进行正确的连接。除此之外,其他都与下待测光纤的带宽测试步骤相同。 三、实验注意事项 1、打开电源后,的激光器都开始工作,不要用眼睛直视前面板的光出接口,以避免造成对眼睛的伤害; 2、接入光纤跳线和待测光纤前,应用酒精擦拭光纤端面,保持清洁; 3、测试完毕后,用防尘帽将仪器和光纤跳线的头盖上,关闭电源; 4、由于的发送功率较高,在未加衰减器的情况下,易出现饱和现象,可适当调整光纤活接头的插入深度进行测试。 5、这种方法的测量精度与整个系统的响应速度有关,除要求光电转换及检测仪器有足够快的响应外,还要求信号脉冲足够窄。一般要求输出脉冲的宽度至少是输入脉冲宽度的1.4倍,才能满足工程所需的精度。

数据结构线性表的应用实验报告

实验报告 课程名称____数据结构上机实验__________ 实验项目______线性表的应用____________实验仪器________PC机___________________ 系别_____电子信息与通信学院___ 专业________ ___ 班级/学号______ __ 学生姓名______ ___________ 实验日期_______________________ 成绩_______________________ 指导教师_______________________

实验一.线性表的应用 1.实验目的:掌握线性链表的存储、运算及应用。利用链 表实现一元多项式计算。 2.实验内容: 1)编写函数,实现用链表结构建立多项式; 2)编写函数,实现多项式的加法运算; 3)编写函数,实现多项式的显示; 4)测试:编写主函数,它定义并建立两个多项式,显示 两个多项式,然后将它们相加并显示结果。变换测试用的多项式,检查程序的执行结果。 选做内容:修改程序,选择实现以下功能: 5)多项式求值:编写一个函数,根据给定的x值计算并 返回多项式f(x)的值。测试该函数(从终端输入一个x的值,调用该函数并显示返回结果)。 6)多项式相减:编写一个函数,求两个多项式相减的多 项式。 7)多项式相乘:编写一个函数,求两个多项式的乘积多 项式。 3.算法说明: 1)多项式的建立、显示和相加算法见讲义。可修改显示 函数,使输出的多项式更符合表达规范。

2)多项式减法:同次项的系数相减(缺项的系数是0)。 例如a(x)=-5x2+2x+3,b(x)= -4x3+3x,则a(x)-b(x) =4x3-5x2-x+3。提示:a(x)-b(x) = a(x)+(-b(x))。 3)多项式乘法:两个多项式的相乘是“系数相乘,指数 相加”。算法思想是用一个多项式中的各项分别与另 一个多项式相乘,形成多个多项式,再将它们累加在 一起。例如,a(x)=-5x2+2x+3,b(x)=-4x3+3x,则 a(x)*b(x) = (-4x3)*(-5x2+2x+3)+(3x)*(-5x2+2x+3) = (20x5-8x4-12x3) + (-15x3+6x2+9x) = 20x5-8x4-27x3+6x2+9x。 4.实验步骤: 根据实验报告的要求,我对文件夹里的C文件进行了丰 富和修改,步骤如下: 链表结构建立多项式: typedef struct polynode { float coef; //系数 int exp; //指数 struct polynode *next; //下一结点指针 } PNode; 编写函数,实现多项式的加法运算; PNode * PolyAdd (PNode *f1, PNode *f2) //实现加法功能。

北邮光纤实验报告背向散射法测量光纤的衰减常数

信息与通信工程学院 光纤通信实验 ——背向散射法测量光纤的衰减常数

一、实验原理 背向散射法是测量光纤衰减常数的替代法。背向散射法是一种非破坏性的测量方法,测量时,只需在光纤的一端进行。这种方法不仅能测量光纤衰减常数,还能检测光纤的物理缺陷和断点位置,测定接头损耗位置,测量光纤的长度等。因此,这种方法被广泛应用在光纤光缆的研究、生产、工程施工和传输系统的维护中。利用背向散射法原理做成的测试仪表叫做光时域反射计(Optical Tine Domain Reflectometer,OTDR)。 背向散射法的原理与雷达相似,它在光纤的一端注入大功率的窄光脉冲,在光脉冲沿着光纤传输时,由于光纤各处存在着瑞利散射,其后向散射部分不断返回光纤的输入端;而当光信号遇到裂纹时反射回的光信号会比后向散射的光信号强很多。在光纤输入端通过适当的耦合和接收信号处理,可以得到光脉冲沿着光纤的衰减及其它信息。 OTDR的主要组成包括光源、光分路器/耦合器、信号处理部分和显示器等。光源是一个或几个脉冲激光器,可以提供单个波长或多个波长的不同脉冲度和重复频率的光脉冲。光分路器/耦合器将光脉冲信号耦合到被测光纤,并将后向散射光和反射光信号耦合到光接收器中。 信号处理部分完成电信号的放大和处理,并将处理过的电信号与从光脉冲中提取的触发信号同步扫描到显示器上,在显示器给出相关数据和结果。 背向散射法是测量光纤衰减常数的原理图

OTDR测得的背向散射法典型曲线 由于信号是通过对数放大器处理的,衰减曲线的纵坐标是对数标度。图中5个典型的曲线段分别表示: ①为光纤输入端的耦合器件产生的反射(菲涅耳反射); ②为恒定斜率区; ③为接头损耗点或耦合引起的不连续性; ④为波导缺陷引起的强反射点; ⑤为输出端菲涅耳反射。 图中A、B两点之间是一条直线,表明相应于光纤上AB段的衰减常数为一定值,由于后向光经过往返两次衰减,所以曲线AB段光纤的衰减为 二、实验步骤 (1)按上图所示连接OTDR和被测光纤; (2)开启OTDR的电源,设置OTDR;

数据结构实验一题目一线性表实验报告

数据结构实验报告 实验名称:实验1——线性表 学生姓名: 班级: 班内序号: 学号: 日期: 1.实验要求 1、实验目的:熟悉C++语言的基本编程方法,掌握集成编译环境的调试方法 学习指针、模板类、异常处理的使用 掌握线性表的操作的实现方法 学习使用线性表解决实际问题的能力 2、实验内容: 题目1: 线性表的基本功能: 1、构造:使用头插法、尾插法两种方法 2、插入:要求建立的链表按照关键字从小到大有序 3、删除 4、查找 5、获取链表长度 6、销毁 7、其他:可自行定义 编写测试main()函数测试线性表的正确性。 2. 程序分析 存储结构 带头结点的单链表

关键算法分析 1.头插法 a、伪代码实现:在堆中建立新结点 将x写入到新结点的数据域 修改新结点的指针域 修改头结点的指针域,将新结点加入链表中 b、代码实现: Linklist::Linklist(int a[],int n)

堆中建立新结点 b.将a[i]写入到新结点的数据域 c.将新结点加入到链表中 d.修改修改尾指针 b、代码实现: Linklist::Linklist(int a[],int n,int m)取链表长度函数 a、伪代码实现:判断该链表是否为空链表,如果是,输出长度0 如果不是空链表,新建立一个temp指针,初始化整形数n为0 将temp指针指向头结点 判断temp指针指向的结点的next域是否为空,如果不是,n加一,否 则return n 使temp指针逐个后移,重复d操作,直到temp指针指向的结点的next 域为0,返回n b 、代码实现 void Linklist::Getlength()Linklist(); cout<

数据结构实验一 实验报告

班级: 姓名: 学号: 实验一线性表的基本操作 一、实验目的 1、掌握线性表的定义; 2、掌握线性表的基本操作,如建立、查找、插入与删除等。 二、实验内容 定义一个包含学生信息(学号,姓名,成绩)的顺序表与链表(二选一),使其具有如下功能: (1) 根据指定学生个数,逐个输入学生信息; (2) 逐个显示学生表中所有学生的相关信息; (3) 根据姓名进行查找,返回此学生的学号与成绩; (4) 根据指定的位置可返回相应的学生信息(学号,姓名,成绩); (5) 给定一个学生信息,插入到表中指定的位置; (6) 删除指定位置的学生记录; (7) 统计表中学生个数。 三、实验环境 Visual C++ 四、程序分析与实验结果 #include #include #include #include #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; // 定义函数返回值类型 typedef struct

{ char num[10]; // 学号 char name[20]; // 姓名 double grade; // 成绩 }student; typedef student ElemType; typedef struct LNode { ElemType data; // 数据域 struct LNode *next; //指针域 }LNode,*LinkList; Status InitList(LinkList &L) // 构造空链表L { L=(struct LNode*)malloc(sizeof(struct LNode)); L->next=NULL; return OK; } Status GetElem(LinkList L,int i,ElemType &e) // 访问链表,找到i位置的数据域,返回给 e { LinkList p; p=L->next;

相关文档