数据结构栈的基本操作,进栈,出栈
第五次实验报告—— 顺序栈、链栈的插入和删除一需求分析 1、在演示程序中,出现的元素以数字出现定义为int型, 2、演示程序在计算机终端上,用户在键盘上输入演示程序中规定的运算命令,相应的输入数据和运算结果显示在终端上 3、顺序栈的程序执行的命令包括如下: (1)定义结构体 (2)顺序栈的初始化及创建 (3)元素的插入 (4)元素的删除 (5)顺序栈的打印结果 3、链栈的程序执行的命令包括如下: (1)定义结构体 (2)链栈的初始化及创建 (3)元素的插入 (4)元素的删除 (5)链栈的打印结果 二概要设计 1、顺序栈可能需要用到有序表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemL, i=1,2,...,n, n≥0} 数据关系:R1={|ai-1,ai ∈D, i=2,...,n } 基本操作: InitStack(SqStack &S) 操作结果:构造一个空栈 Push(L,e) 操作结果:插入元素e为新的栈顶元素
Status Pop(SqStack &S) 操作结果:删除栈顶元素 }ADT List; 2、链栈可能需要用到有序表的抽象数据类型定义: ADT List{ 数据对象:D={ai|ai∈ElemL, i=1,2,...,n, n≥0} 数据关系:R1={|ai-1,ai ∈D, i=2,...,n } 基本操作: LinkStack(SqStack &S) 操作结果:构造一个空栈 Status Push(L,e) 操作结果:插入元素e为新的栈顶元素 Status Pop(SqStack &S) 操作结果:删除栈顶元素 }ADT List; 3、顺序栈程序包含的主要模块: (1) 已给定的函数库: (2)顺序栈结构体: (3)顺序栈初始化及创建: (4)元素插入 (5)元素删除
大学物理实验答案完整版
大学物理实验答案 HUA system office room 【HUA16H-TTMS2A-HUAS8Q8-HUAH1688】
实验一 物体密度的测定 【预习题】 1.简述游标卡尺、螺旋测微器的测量原理及使用时的注意事项。 答:(1)游标卡尺的测量原理及使用时的注意事项: 游标卡尺是一种利用游标提高精度的长度测量仪器,它由主尺和游标组成。设主 尺上的刻度间距为y ,游标上的刻度间距为x ,x 比y 略小一点。一般游标上的n 个刻度间距等于主尺上(n -1)个刻度间距,即y n nx )1(-=。由此可知,游标上的刻度间距与主尺上刻度间距相差n 1,这就是游标的精度。 教材P33图1-2所示的游标卡尺精度为 mm 501,即主尺上49mm 与游标上50格同长,如教材图1-3所示。这样,游标上50格比主尺上50格(50mm )少一格(1mm ),即游标上每格长度比主尺每格少1÷50 = 0.02(mm), 所以该游标卡尺的精度为0.02mm 。 使用游标卡尺时应注意:①一手拿待测物体,一手持主尺,将物体轻轻卡住,才 可读数。②注意保护量爪不被磨损,决不允许被量物体在量爪中挪动。③游标卡尺的外量爪用来测量厚度或外径,内量爪用来测量内径,深度尺用来测量槽或筒的深度,紧固螺丝用来固定读数。 (2)螺旋测微器的测量原理及使用时的注意事项: 螺旋测微器又称千分尺,它是把测微螺杆的角位移转变为直线位移来测量微小长 度的长度测量仪器。螺旋测微器主要由固定套筒、测量轴、活动套筒(即微分筒)组成。
如教材P24图1-4所示,固定套管D上套有一个活动套筒C(微分筒),两者由高精度螺纹紧密咬合,活动套筒与测量轴A相联,转动活动套筒可带动测量轴伸出与缩进,活动套筒转动一周( 360),测量轴伸出或缩进1个螺距。因此,可根据活动套筒转动的角度求得测量轴移动的距离。对于螺距是0.5mm螺旋测微器,活动套筒C的周界被等分为50格,故活动套筒转动1 格,测量轴相应地移动0.5/50=0.01mm,再加上估读,其测量精度可达到0.001 mm。 使用螺旋测微器时应注意:①测量轴向砧台靠近快夹住待测物时,必须使用棘轮而不能直接转动活动套筒,听到“咯、咯”即表示已经夹住待测物体,棘轮在空转,这时应停止转动棘轮,进行读数,不要将被测物拉出,以免磨损砧台和测量轴。②应作零点校正。 2.为什么胶片长度可只测量一次? 答:单次测量时大体有三种情况:(1)仪器精度较低,偶然误差很小,多次测量读数相同,不必多次测量。(2)对测量的准确程度要求不高,只测一次就够了。(3)因测量条件的限制,不可能多次重复测量。本实验由对胶片长度的测量属于情况(1),所以只测量1次。
计算机组成原理实验2实验报告
课程名称计算机组成原理 课程代码6013749 实验时间2013 年12 月15 日 指导单位 指导教师 学生姓名年级 学号专业 成绩 实验名称 实验地点 6A-417 实验二通用寄存器单元实验 实验类型验证实验学时8 实验日期 实验目的和要求: 目的:1.了解通用寄存器的组成和硬件电路; 2 .利用通用寄存器实现数据的置数、左移、右移等功能 要求:按照实验步骤完成实验项目,实现通用寄存器移位操作。了解通用寄存器的工作原理运用。实验环境(实验设备) :CPT实验机,连线
实验原理及内容 1.实验原理 <1>通用寄存器单元的工作原理: 通用寄存器的核心部件为2片GAL,它具有锁存、左移、右移、保存等功能。各个功能都由X1、X2信号和工作脉冲RACK来决定。当置ERA=0、X0=1、X1=1,RACK有上升沿时,把总线上的数据打入通用寄存器。可通过设置X1、X0来指定通用寄存器工作方式,通用寄存器的输出端Q0~Q7接入判零电路。LED(ZD)亮时,表示当前通用寄存器内数据为0。 输出缓冲器采用74LS244,当控制信号RA-O为低时,74LS244开通,把通用寄存器内容输出到总线;当控制信号RA-O为高时,74LS244的输出为高阻。 图1 通用寄存器原理图 <2>寄存器实验构成 1.通用寄存器由2片GAL构成8位字长的寄存器单元。8 芯插座RA-IN作为数据输入端,可通过端8芯扁平电缆, 把数据数据输入端连接到数据总线上。 2.数据输出由一片74LS244(输出缓冲器)来控制。用8 芯插座RA-OUT作为数据输出端,可通过端8芯扁平电 缆,把数据数据输出端连接到数据总线上。 3.判零和进位电路由1片GAL、1片7474和一些常规芯片 组成,用2个LED(ZD、CY)发光管分别显示其状态。
实验报告答案
实验2:MIPS指令系统和MIPS体系结构 一.实验目的 (1)了解和熟悉指令级模拟器 (2)熟悉掌握MIPSsim模拟器的操作和使用方法 (3)熟悉MIPS指令系统及其特点,加深对MIPS指令操作语义的理解 (4)熟悉MIPS体系结构 二. 实验内容和步骤 首先要阅读MIPSsim模拟器的使用方法,然后了解MIPSsim的指令系统和汇编语言。(1)、启动MIPSsim(用鼠标双击MIPSsim.exe)。 (2)、选择“配置”->“流水方式”选项,使模拟器工作在非流水方式。 (3)、参照使用说明,熟悉MIPSsim模拟器的操作和使用方法。 可以先载入一个样例程序(在本模拟器所在的文件夹下的“样例程序”文件夹中),然后分别以单步执行一条指令、执行多条指令、连续执行、设置断点等的方式运行程序,观察程序的执行情况,观察CPU中寄存器和存储器的内容的变化。 (4)、选择“文件”->“载入程序”选项,加载样例程序 alltest.asm,然后查看“代码”窗口,查看程序所在的位置(起始地址为0x00000000)。 (5)、查看“寄存器”窗口PC寄存器的值:[PC]=0x00000000。 (6)、执行load和store指令,步骤如下: 1)单步执行一条指令(F7)。 2)下一条指令地址为0x00000004,是一条有 (有,无)符号载入字节 (字节,半字,字)指令。 3)单步执行一条指令(F7)。 4)查看R1的值,[R1]= 0xFFFFFFFFFFFFFF80 。 5)下一条指令地址为0x00000008,是一条有 (有,无)符号载入字 (字节,半字,字)指令。 6)单步执行1条指令。 7)查看R1的值,[R1]=0x0000000000000080 。 8)下一条指令地址为0x0000000C ,是一条无 (有,无)符号载入字节 (字节,半字,字)指令。 9)单步执行1条指令。 10)查看R1的值,[R1]= 0x0000000000000080 。 11)单步执行1条指令。 12)下一条指令地址为0x00000014 ,是一条保存字 (字节,半字,字)指令。 13)单步执行一条指令。
大物实验报告简易版
The Short-Term Results Report By Individuals Or Institutions At Regular Or Irregular Times, Including Analysis, Synthesis, Innovation, Etc., Will Eventually Achieve Good Planning For The Future. 编订:XXXXXXXX 20XX年XX月XX日 大物实验报告简易版
大物实验报告简易版 温馨提示:本报告文件应用在个人或机构组织在定时或不定时情况下进行的近期成果汇报,表达方式以叙述、说明为主,内容包含分析,综合,新意,重点等,最终实现对未来的良好规划。文档下载完成后可以直接编辑,请根据自己的需求进行套用。 【实验目的】 1、了解示波器的基本结构和工作原理,学 会正确使用示波器。 2、掌握用示波器观察各 种电信号波形、测量电压和频率的方法。 3、掌握观察利萨如图形的方法,并能用利 萨如图形测量未知正弦信号的频率。 【实验仪器】 固纬GOS-620型双踪示波器一台,GFG-809 型信号发生器两台,连线若干。 【实验原理】 示波器是利用示波管内电子束在电场或磁 场中的偏转,显示电压信号随时间变化波形的
一种电子观测仪器。在各行各业与各个研究领域都有着广泛的应用。其基本结构与工作原理如下 1、示波器的基本结构与显示波形的基本原理 本次实验使用的是台湾固纬公司生产的通用双踪示波器。基本结构大致可分为示波管(CRT)、扫描同步系统、放大与衰减系统、电源系统四个部分。“示波管(CRT)”是示波器的核心部件如图1所示的。可细分为电子枪,偏转系统和荧光屏三部分。 1)电子枪 电子枪包括灯丝F,阴极K,控制栅极G,第一阳极A1,第二阳极A2等。阴极被灯丝加热后,可沿轴向发射电子。并在荧光屏上显现一
电力系统经济学基础实验2实验报告
电力系统经济学基础实验 :世昌 学号:201100190242 2014.05.25
实验二输电网对电能交易的影响 实验目的:通过实验,了解电力市场中输电网的运营,理解节点电价的计算、阻塞对电能交易的影响以及电网安全评价等;理解可用输电能力的计算。 实验条件: 1.采用PowerWorld仿真软件。 2.实验系统的组成: 实验系统是由四条输电线、五台机组组成的三节点系统,线路参数、负荷分布以及发电机参数分别见表1、表2和表3。 表1.线路参数 表2.负荷分布
表3.发电机参数 实验容: (一)逐次进行如下实验 1.在PowerWorld中建立实验系统。采用PowerWord中的现成试验系统版本
2.用最优潮流求解系统的最优安全经济调度。记录潮流和节点电价,并回答:
(1)节点电价与机组的边际成本间是什么关系? 答:根据上述构建的模型,节点的边际价格等于向该节点增加单位功率负荷供电时成本的增加量。而增加节点3处的单位功率(使其负荷变为301)节点3处的电价仍然是7.5$/Mwh,此价格由边际机组2的成本决定。 (2)哪台机组是边际机组? 答;机组2是边际机组 (3)比较并解释边际机组和非边际机组所获利润的不同。 答:上述系统中机组2为边际机组,发电边际成本为7.5$/Mwh,机组1为完全带负荷机组,发电边际成本为5$/Mwh。由于完全带负荷机组已经达到其发电量上限故多余的负荷应由边际机组提供,此时的市场价格取决于边际机组能接受的价格,此价格高于完全带负荷机组发电成本(非边际机组),非边际机组按此价格参与市场交易将获得跟大的收益。 (4)在节点2增加1MW负荷,目标函数的增加值为多少?与节点2的节点电价之间是什么关系? 答:
栈实验报告
北京建筑大学 理学院《数据结构与算法》课程实验报告 课程名称《数据结构与算法》实验名称栈的创建以及应用实验地点基C-419 日期_2015-4-25 姓名李若万班级信131 学号201307010135 指导教师毕靖成绩 【实验目的】 1.熟悉并写出栈的逻辑结构表示 2.实现栈的存储表示 3.实现线性表的操作 【实验内容】 1.括号匹配 【实验要求】 1.要求:在实验报告中写出栈的ADT表示; 2.在实验报告中给出数据类型定义和核心算法和程序; 3.在实验报告中罗列实验过程中出现的问题和解决的方法; 4.打包上交调试后的完整程序,提交实验报告; 5.实验之前写出实验报告的大概框架,实验过程中填写完整。 6.实验时携带需要上机调试的程序; 7.实验评分:实验之前预习占20%,实验报告书写情况占50%,运行情况30%。 【实验步骤】 实验中出现的问题以及解决方法: 1、代码里面用到getch()报错,后来在前面提前声明头文件#include可以运行。 2、不知道怎么实验括号的匹配检验,通过查资料了解到括号匹配检验的实现需要用 switch,case,break,default等等语句来实现。 3、设定好的小中括号可以正常按代码运行,若遇到其他的大括号和数字等,也可以运行匹配成功,问题 没有得到解决。 【实验结果】 1、ADT表示: ADT Stack{ InitStack(&S)//构造一个空栈S GetTop(S,&e)//取栈顶元素 Push(&S,e)//插入新的栈顶元素 Pop(&S,&e)//删除栈顶元素 DestroyStack(&S)//销毁栈 } 2、数据结构的定义: typedef struct //定义结构体 {selemtype *base; //定义栈底指针 selemtype *top; //定义栈顶指针 int stacksize; //定义栈的大小 } sqstack; //sqstack为结构体类型
北理大学计算机实验基础实验二实验报告表答案
实验二实验报告表 实验名称: 学号姓名:班级:实验时间: 实验报告表2-1 数值型数据在计算机中的二进制实验记录表 十进制整数分输入十进制整数内存整型数 据内存地址号 类 任意正整数7 0000011100000000 00010001000100 02 任意负整数-5 1111101111111111 00010003000100 04 最大数3276711111111011111111 00010005000100 06 最小数-32768000000001000000 00010007000100 08 绝对值最小数0 0000000000000000 00010009000100 0A 绝对值最大数-32768000000001000000 00010007000100 08 十进制实数分输入十进制实数内存实型数据 类 尾数部分阶码阶码的数学表示 任意正实数 2.211001100000011000100000 0 11001101 1 任意负实数-2.211001100000011001100000 0 11001101 1 最大数99.999911111111110001110100001 0 11110011 6 最小数-99.999911111111110001111100001 0 11110011 6 绝对值最小数0 00000000000000000000000 0 00000000 0 绝对值最大 数99.999911111111110001110100001 0 11110011 6 说明:本实验对计算机内存数据的存放拟定为:①整数用两个字节存储,并负数只考虑原码;②实数用 4 个字节存储,其中阶码部分占一个字节。 实验报告表2-2 其他进制数据与二进制转化实验记录表 其他进 制实验数据二进制 十进制6110 八进制7111 十六进 制 A 101 0 实验报告表2-3 数据的原码、补码和反码表示实验记录表 正十进制数113 负十进制数-103
(完整word版)顺序栈基本操作实验报告
数据结构实验三 课程数据结构实验名称顺序栈基本操作第页 专业班级学号 姓名 实验日期:年月日评分 一、实验目的 1.熟悉并能实现栈的定义和基本操作。 2.了解和掌握栈的应用。 二、实验要求 1.进行栈的基本操作时要注意栈"后进先出"的特性。 2.编写完整程序完成下面的实验内容并上机运行。 3.整理并上交实验报告。 三、实验内容 1.编写程序任意输入栈长度和栈中的元素值,构造一个顺序栈,对其进行清空、销毁、入栈、出栈以及取栈顶元素操作。 2.编写程序实现表达式求值,即验证某算术表达式的正确性,若正确,则计算该算术表达式的值。 主要功能描述如下: (1)从键盘上输入表达式。 (2)分析该表达式是否合法: ?a) 是数字,则判断该数字的合法性。若合法,则压入数据到堆栈中。 ?b) 是规定的运算符,则根据规则进行处理。在处理过程中,将计算该表达式的值。 ?c) 若是其它字符,则返回错误信息。 (3)若上述处理过程中没有发现错误,则认为该表达式合法,并打印处理结果。 程序中应主要包含下面几个功能函数: ?l void initstack():初始化堆栈 ?l int Make_str():语法检查并计算
?l int push_operate(int operate):将操作码压入堆栈 ?l int push_num(double num):将操作数压入堆栈 ?l int procede(int operate):处理操作码 ?l int change_opnd(int operate):将字符型操作码转换成优先级 ?l int push_opnd(int operate):将操作码压入堆栈 ?l int pop_opnd():将操作码弹出堆栈 ?l int caculate(int cur_opnd):简单计算+,-,*,/ ?l double pop_num():弹出操作数 四、实验步骤 (描述实验步骤及中间的结果或现象。在实验中做了什么事情,怎么做的,发生的现象和中间结果) 第一题: #include using namespace std; #define STACK_INIT_SIZE 100 //存储空间初始分配量 #define STACKINCREMENT 10 //存储空间分配增量 #define OVERFLOW -1 #define OK 1 #define NO -1 #define NULL 0 typedef int Status; typedef char SElemType; typedef struct { SElemType *base; //在栈构造之前和销毁之后,base的值为NULL SElemType *top; //栈顶指针 int stacksize; //当前已分配的存储空间,以元素为单位 } SqStack; Status Initstack(SqStack &S)//构造一个空栈S { S.base=(SElemType *)malloc(STACK_INIT_SIZE*sizeof(SElemType)); if(!S.base) exit(OVERFLOW); S.top=S.base; S.stacksize= STACK_INIT_SIZE; return OK; }//InitStack Status StackEmpty(SqStack &S) { if(S.base==S.top)