哈工大数据结构线性结构及其应用

哈工大数据结构线性结构及其应用
哈工大数据结构线性结构及其应用

哈尔滨工业大学计算机科学与技术学院

实验报告

课程名称:数据结构

课程类型:必修

实验项目名称:线性结构及其应用

实验题目:线性结构及其应用

一、实验目的

二、实验要求及实验环境

三、设计思想(本程序中的用到的所有数据类型的定义,主程序的流程图及各程序模块之间的调用关系)

1.逻辑设计

2.物理设计

四、测试结果

五、系统不足与经验体会

六、附录:源代码(带注释)

一、实验目的

输入中缀表达式保存并显示,之后转换为后缀表达式,并且求出表达式的结果。

二、实验要求及实验环境

实验要求

(1)从键盘输入任意一个语法正确的(中缀)表达式,显示并保存该表达式。

(2)利用栈结构,把上述(中缀)表达式转换成后缀表达式,并显示栈的状态变化过程

和所得到的后缀表达式。

(3)利用栈结构,对上述后缀表达式进行求值,并显示栈的状态变化过程和最终结果。

实验环境

Dev-C++软件中运行

Win7系统

三、设计思想

本实验中定义了int 型,char型,struct 型,char *型,struct型

逻辑设计:应用栈后进先出的规律,在转换为后缀表达式时,

将操作运算符压入栈中,碰见更高级运算符时栈中元素出栈,继续比较;否则压栈。这样可以完成表达式的转换。在利用得到的后缀表达式计算结果时,将操作数压栈,遇见符号直接计算,这是后缀表达式的特点。

物理设计:建立一个结构体数组的栈,数组中存放运算符。数组的添加和减少都在数组末尾元素进行。可以视为一个栈。

四、测试结果

样例1. 输入1+2*(3-4/2)

输出为1+2*(3-4/2) ->此为保存并输出的中缀表达式

12342/-*+ ->此为输出后缀表达式

3 ->此为表达式的值

样例2. 输入1+2*3/4-5

输出为1+2*3/4-5

123*4/+5-

-3

五、系统不足与经验体会

不足

1.此程序只能进行整形一位数上的计算,无法实现实数范围内的计算。

2.程序用的是结构体数组来表示栈的存储结构,数组定义时,定义一段很大的空间,导致

空间利用率不高。

经验体会

1.建立算法框架时如中缀表达式变后缀表达式,后缀表达式的求值时,需要用到很多的函

数来搭建。这个可以先放下,先将该算法编好,完成之后再将所需要的函数填补起来。

这样可以简化步骤。

2.算法分模块解决,不把所有算法堆到一个函数里面。这样可以使程序简洁明了,各个函

数的分工明确。易于调试差错。

六、附录:源代码(带注释)

#include

#include

#define MAX 100 //定义栈中最多有100个元素

/*创建结构体,结构体中含有两个量,一个数组栈,一个指向栈顶元素*/ typedef struct{

int data[MAX]; //定义数组栈

int top; //栈顶标号

}seqstack,*pseqstack;

/*创建一个顺序栈,入口无参数,返回一个指向顺序栈的指针*/

pseqstack init_seqstack()

{

pseqstack s;

s=(pseqstack)malloc(sizeof(seqstack)); //申请栈的内存空间 if(s)

s->top=-1; //创建新栈时栈顶指针指向-1

return s;

}

/*判断栈是否为空,返回1表示空,0表示非空*/

int empty_seqstack(pseqstack s)

{

if(s->top==-1) //判断条件为top指针是否指向-1

return 1;

else

return 0;

}

/*入栈:栈顶插入x*/

int push_seqstack(pseqstack s,int x)

{

if(s->top==MAX-1)

return 0; //栈已满,返回0

else

{

s->top++; //栈顶指针+1,指向将要压栈的x

s->data[s->top]=x;

return 1;

}

}

/*出栈:入口参数为s,*x。删除栈顶元素,并且保存在*x中*/

int pop_seqstack(pseqstack s,char *x)

if(empty_seqstack(s))

return 0;

else

{

*x=s->data[s->top];

s->top--;

return 1;

}

}

/*销毁栈*/

void destroy_seqstack(pseqstack *s)

{

if(*s)

free(*s);

*s=NULL;

}

/*判断字符是否为操作数;是返回1,否则为0*/

int isnum(char c)

{

if(c>='0'&&c<='9')

return 1; //若字符常量的值小于等于‘9’大于等于‘0’则为操作数,并返回1 else

return 0;

}

/*求算符的优先级,入口参数为字符op*/

int priority(char op)

{

switch(op)

{

case '\0': return (0);

case ')': return (1);

case '+': return (2);

case '-': return (2);

case '*': return (3);

case '/': return (3);

case '(': return (4);

default: return (5);

//定义各个支付对应的优先级

}

/*中缀表达式转换成后缀表达式,入口参数字符指针*in,*post*/

//*post中存入后缀表达式

void change(char *in,char *post)

{

pseqstack s;

char c,w,y;

int z1,z2;

s=init_seqstack();

if(!s)

{

printf("initial fault");

} //栈初始化失败输出initial fault push_seqstack(s,'\0'); /*转换之前将栈底存入‘\0’,标记作用,便于判断循环中是否到栈底*/

w=*in; //w存入中缀表达式中第一个元素

while(s->data[s->top]!='\0'||w!='\0') /*当s栈栈底元素不为‘\0’或者w不为‘\0’(w为\0时表示中缀表达式已经读完)时循环*/

{

if(isnum(w))

{

*post=w;

post++;

w=*(++in);

} /*判断w是操作数时,将w赋给*post,并且指针post++,w中值被赋为*in中下一个元素*/

//w不是操作数时

else

{

if(s->data[s->top]=='('&&w==')')

{

pop_seqstack(s,&y);

w=*(++in);

}

/*栈顶为‘(‘且w为’)‘时栈顶元素出栈,但出栈元素’(‘不存入*post,w中值被赋为*in 中下一个元素*/

else

{

/*比较栈顶元素与w运算符的优先级大小,

若栈顶优先级更小,则w入栈

否则栈顶出栈,并将出栈元素赋给*post,post++ */

if(s->data[s->top]=='('||priority(s->data[s->top])

push_seqstack(s,w);

w=*(++in);

}

else

{

pop_seqstack(s,&y);

*post=y;

post++;

}

}

}

}

*post='\0'; //字符串最后添加‘\0‘表示字符串终止

destroy_seqstack(&s); //销毁栈

}

/*后缀表达式求值,入口参数为字符指针*b,其中存储了后缀表达式*/

void result(char *b)

{

pseqstack s;

char ch,a,c,d,result;

ch=*b++;

s=init_seqstack();

//循环在后缀表达式到结尾‘\0‘时终止

while(ch!='\0')

{

if(isnum(ch))

{

push_seqstack(s,ch-'0');

}

//若ch 为操作数则存入栈中,否则进行运算

else

{

pop_seqstack(s,&a);

pop_seqstack(s,&c); //栈中最上方的两个数出栈计算

switch(ch) //各种条件下的运算

{

case '+': d=a+c; break;

case '-': d=c-a; break;

case '*': d=a*c; break;

case '/': d=c/a; break;

}

push_seqstack(s,d); //运算后的结果再压入栈中 }

ch=*b++;

}

//循环完成后栈顶元素就是表达式最后的值,输出该值

printf("%d",s->data[s->top]);

destroy_seqstack(&s);

}

/*主函数*/

int main()

{

int x,y;

char a[MAX],b[MAX];

gets(a); //输入中缀表达式,并且存入字符数组a[MAX]中

puts(a); //输出保存得到的中缀表达式

change(a,b); //调用函数得到后缀表达式

puts(b); //输出后缀表达式

result(b); //调用函数计算表达式的值,并输出该值

getchar();

getchar();

return 0;

}

数据库系统基础课后题

《数据库系统基础》课后练习题 数据库系统基础 课后练习题 哈尔滨工业大学计算机科学与技术学院

《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 1.分别用关系代数、元组演算、SQL语句完成CAP数据库的查询。 CAP数据库有四个关系(表): Customers(cid, cname, city, discnt), 客户定义表,描述了客户的唯一标识 cid,客户名称cname,客户所在的城市city,以及该客户购买产品时所可能给予的折扣discnt Agents(aid, aname, city, percent), 代理商定义表,描述了代理商的唯一标识aid, 代理商名称aname, 代理商所在的城市city,以及该代理商销售产品时所可能给予的佣金/提成percent(以百分比形式表达) 哈尔滨工业大学计算机科学与技术学院

《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (1) 找出订单总价大于或者等于$1000的(ordno, pid)对 哈尔滨工业大学计算机科学与技术学院

《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (2) 找出所有价格在$0.50和$1.00之间的商品名字,包括边界价格 哈尔滨工业大学计算机科学与技术学院

《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (3) 找出订单价格低于$500的(ordno, cname)对,使用一次连接 哈尔滨工业大学计算机科学与技术学院

《数据库系统基础》课后练习题关系代数、关系元组演算、SQL语言 (4) 找出所有三月份接受的订单的(ordno, aname)对,使用一次连接 哈尔滨工业大学计算机科学与技术学院

数据结构试题及答案

数据结构试题 一、单选题 1、在数据结构的讨论中把数据结构从逻辑上分为(C ) A 内部结构与外部结构 B 静态结构与动态结构 C 线性结构与非线性结构 D 紧凑结构与非紧凑结构。 2、采用线性链表表示一个向量时,要求占用的存储空间地址(D ) A 必须是连续的 B 部分地址必须是连续的 C 一定是不连续的 D 可连续可不连续 3、采用顺序搜索方法查找长度为n的顺序表时,搜索成功的平均搜索长度为( D )。 A n B n/2 C (n-1)/2 D (n+1)/2 4、在一个单链表中,若q结点是p结点的前驱结点,若在q与p之间插入结点s,则执行( D )。 A s→link = p→link;p→link = s; B p→link = s; s→link = q; C p→link = s→link;s→link = p; D q→link = s;s→link = p; 5、如果想在4092个数据中只需要选择其中最小的5个,采用( C )方法最好。 A 起泡排序 B 堆排序 C 锦标赛排序 D 快速排序 6、设有两个串t和p,求p在t中首次出现的位置的运算叫做( B )。 A 求子串 B 模式匹配 C 串替换 D 串连接 7、在数组A中,每一个数组元素A[i][j]占用3个存储字,行下标i从1到8,列下标j从1到10。所有数组元素相继存放于一个连续的存储空间中,则存放

该数组至少需要的存储字数是( C )。 A 80 B 100 C 240 D 270 8、将一个递归算法改为对应的非递归算法时,通常需要使用( A )。 A 栈 B 队列 C 循环队列 D 优先队列 9、一个队列的进队列顺序是1, 2, 3, 4,则出队列顺序为( C )。 10、在循环队列中用数组A[0..m-1] 存放队列元素,其队头和队尾指针分别为front和rear,则当前队列中的元素个数是( D )。 A ( front - rear + 1) % m B ( rear - front + 1) % m C ( front - rear + m) % m D ( rear - front + m) % m 11、一个数组元素a[i]与( A )的表示等价。 A *(a+i) B a+i C *a+i D &a+i 12、若需要利用形参直接访问实参,则应把形参变量说明为( B )参数。 A 指针 B 引用 C 值 D 变量 13、下面程序段的时间复杂度为( C ) for (int i=0;i

哈工大结构动力学大作业2012春

结构动力学大作业 对于如下结构,是研究质量块的质量变化和在简支梁上位置的变化对整个系统模态的影响。 1 以上为一个简支梁结构。集中质量块放于梁上,质量块距简支梁的左端点距离为L. 将该简支梁简化为欧拉伯努利梁,并离散为N 个单元。每个单元有两个节点,四个自由度。 单元的节点位移可表示为: ]1122,,,e v v δθθ?=? 则单元内一点的挠度可计作: 带入边界条件: 1 3 32210)(x a x a x a a x v +++=0 1)0(a v x v ===3 322102)(L a L a L a a v L x v +++===1 10 d d a x v x ===θ2 321232d d L a L a a x v L x ++===θ1 0v a =

[]12 3 4N N N N N = 建立了单元位移模式后,其动能势能均可用节点位移表示。单元的动能为: 00111()222 l l T T T ke e e e e y E dx q N Ndxq q mq t ρρ?===??? 其中m 为单元质量阵,并有: l T m N Ndx ρ=? 带入公式后积分可得: 222215622541322413354 1315622420133224l l l l l l l m l l l l l l ρ-?? ??-??= ?? -?? ---? ? 单元势能可表示为 22 200 11()()22 2 T l l T T e pe e e e q y E EI dx EI N N dxq q Kq x ?''''== =??? 其中K 为单元刚度矩阵,并有 ()l T K EI N N dx ''''=? 2 23 2212 612664621261266264l l l l l l EI k l l l l l l l -????-??=??---??-?? 以上为单元类型矩阵,通过定义全局位移矩阵,可以得到系统刚度矩阵和系统质量矩 1 1θ=a )2(1)(3211222θθ+--=L v v L a )(1)(22122133θθ++-= L v v L a 1232133222231)(θ???? ??+-+???? ??+-=L x L x x v L x L x x v 2 2232332223θ??? ? ??-+???? ??-+L x L x v L x L x 2 4231211)()()()()(θθx N v x N x N v x N x v +++=

电子通讯与控制 职务说明书格式

电子通讯与控制职务说明书格式 第九研究室部门职务说明书电子控制与通讯岗位职务说明书岗位编号:205-905 编写日期:2003-11-27 岗位名称:电子通讯与控制在岗人数:6~7 所在部门:第九研究室编写人:直接上级:第九研究室主任.项目负责人直接下级:直接下级人数:审定人:本职概述:从事光电子和红外热成像技术及产品有关的电子通讯与控制组件的设计与研究工作。 跟踪.分析.报告国内外有关电子通讯与控制组件设计技术和热成像处理电子学的最新进展,了解和掌握电子电路加工与制造工艺技术.电子设计.产品和市场的动态。 职责一:参与产品开发或技术研究总体方案论证平均占工作时间百分比:15% 工作任务结合国内外电子控制技术和市场发展动态,及时报告.申请拟开展立项论证研究的课题结合总体方案论证的需求开展相关电子控制与通讯系统设计方案可行性论证,开展国内外相关技术调研建议.实施与信号处理论证研究直接相关的内部技术分析研讨会或关键技术的演示验证试验编制并提交产品开发或技术研究项目的电子控制与通讯系统论证报告工作权限工作责任工作频次工作关系内部关系外部关系建议权执行权有限责任每2~3年一次每次5~7周项目负责人.总体设计.光机结构设计.电子信号处理.可靠性预计

第七.第等专业研究室和试制研究中心职责二:设计输入控制平均占工作时间百分比:20% 工作任务根据总体下达的光机设计技术要求,制定电子通讯与控制系统的总体设计方案(基本组成.结构.布局和性能)确定电子通讯与控制组部件的技术性能要求,明确所选用元器件的电气特性.使用环境和工艺制造条件。 按照上级设计师系统下达的电子通讯与控制性能指标要求,制定电子通讯与控制系统的设计规范,明确规定电子通讯与控制系统的输入信号.控制输入与输出.功率输入.输出信号.噪声控制要求.通讯接口标准.通道带宽.通道增益和传递函数.环境适应性等性能设计方面的技术要求。 工作权限工作责任工作频次工作关系内部关系外部关系执行权全部每2~3年一次每次2~3个月项目负责人.总体设计.光机结构设计.电子信号处理.可靠性预计 第研究室和试制研究中心职责三:设计输出控制平均占工作时间百分比:40 % 工作任务按计划开展项目与产品的技术研究和电子电路设计工作根据产品研制或技术设计工作需要,组织开展关键技术试验.实验和联合技术攻关,制定联合攻关的技术方案报告或关键技术和产品的试验.实验大纲。 在保证产品研制工作质量的条件下,严格控制各项研制成本在产品研制的各阶段要注意收集和积累能够反映产品研制工作进展和技术状态控制的各种相关资料(包括文字材料.图片.音频和

HIT软件学院数据库实验1

哈尔滨工业大学 <<数据库系统>> 实验报告之一 (2014年度春季学期)

实验一交互式SQL语言 一、实验目的 ●掌握SQL语句的语法 ●着重熟悉掌握利用SQL编写Select查询的方法 ●熟悉SQLite的用法 二、实验内容 ●1) 双击打开sqlite3.exe,该程序为SQLite数据库管理系统 ●2) 利用.help查看SQLite支持的控制台系统命令。注意系统命令结尾处 没有结束符“;”

●3) 阅读.help中对.databases 命令的说明,并查看输出结果 ●4) 阅读.help中对.open命令的说明,并使用该命令创建一个数据库(名 字任意)后缀名统一为“.db3”(可以没有后缀名,但不推荐) ●5) 再次运行.databases 命令,与步骤3的输出结果对比 ●6) 阅读.help中对.tables命令的说明,并使用该命令查看当前数据库的所 有表 ●7) 创建满足要求的关系表(使用create table) ●表一 ●表名:College(存储大学的信息) ●属性:cName(字符串存储的大学名字),state(字符串格式的大学所在

州),enrollment(整数形式的大学入学学费) ●表二 ●表名:Student(存储学生的信息) ●属性:sID(整数形式的学号),sName(字符串形式的学生名字),GPA (小数形式的成绩),sizeHS(整数形式的所在高中规模) ●表三 ●表名:Apply(存储学生申请学校的信息) ●属性:sID(整数形式的学号),cName(字符串形式的大学名字),major (字符串形式的专业名字),decision(字符串形式的申请结果) ●8)利用.tables查看当前数据库中的表,对比步骤6中的运行结果 ●9) 利用如下命令,将存储在txt文件中的元组导入数据库的关系中●.separator "," ●.import dbcollege.txt College ●.import dbstudent.txt Student ●.import dbapply.txt Apply

数据结构线性表2答案

习题二 一、选择题 1.在一个长度为n的顺序表中删除第i个元素(0<i

哈工大结构风工程课后习题答案

结构风工程课后思考题参考答案 二、大气边界层风特性 1 对地表粗糙度的两种描述方式:指数律和对数律(将公式写上)。 2 非标准地貌下的风速换算原则(P)和方法(P公式)。1514 3 脉动风的生成: 近地风在流动过程中由于受到地表因素的干扰,产生大小不同的涡旋,这些涡旋的迭加作用在宏观上表现为速度的随机脉动。在接近地面时,由于受到地表阻力的影响,导致风速减慢并逐步发展为混乱无规则的湍流。 脉动风的能量及耗散机制:而湍流运动可以看做是能量由低频脉动向高频脉动过渡,并最终被流体粘性所耗散的过程。在低频区漩涡尺度较大,向中频区(惯性子区)、高频区(耗散区)漩涡尺度逐渐减小,小尺度涡吸收由惯性子区传递过来的能量,能量最终被流体粘性所耗散。 4 Davenport谱的特点:先写出公式 通过不同水平脉动风速谱的比较: (1)D谱不随高度变化,而其他谱(如Kaimal谱、Solari谱、Karman谱)则考虑了近地湍流随高度变化的特点;(D谱不随高度变化,在高频区符合-5/3律,没有考虑近地湍流随高度变化的特点;) (2)D谱的谱值比其它谱值偏大,会高估结构的动力反应,计算结果偏于保守。(3)S(0)=0,意味着L=0,与实际不符。uu5 湍流度随高度及地面粗糙程度的变化规律:随地面粗糙度的增大而增大,随高度的增加而减小。 积分尺度随高度及地面粗糙程度的变化规律:大量观测结果表明,大气边界层中的湍流积分尺度是地面粗糙度的减函数,而且随着高度的增加而增加。 功率谱随高度及地面粗糙程度的变化规律:随着高度增大和粗糙度的减小,能量在频率上的分布趋于集中,谱形显得高瘦;随着高度减小和粗糙度的增大,能量在频率上的分布趋于分散,谱形显得扁平。 相干函数随高度及地面粗糙程度的变化规律:随地面粗糙度的增大而减小,随高度的增加而增大。 6 阵风因子与峰值因子的区别:阵风因子G=U'/U,是最大风速与平均风速的比/ σ是最大脉动风速与脉动风速均方根的比值。g=u 值;峰值因子umax联系:二者可以相互换算:G=(U'+gσ)/U'=1+gσ/U'=1+gI。Uuu 三、钝体空气动力学理论 1 钝体绕流的主要特征有: )粘性效应:气体粘性随温度升高而增大,液体粘性随温度升高而减小。1((2)边界层的形成:由于粘性效应,使靠近物体表面的空气流动速度减慢,形 成气流速度从表面等于零逐渐增大到与外层气流速度相等,形成近壁面流动现象。 (3)边界层分离:如果边界层内的流体微粒速度因惯性力减小到使靠近表面的气流倒流,便出现了边界层分离。 (4)再附:在一定条件下,自建筑物前缘分离的边界层会偶然再附到建筑物表面,这时附面层下会形成不通气的空腔,即分离泡。每隔一段时间分离泡破裂产生较大的风吸值,产生一个风压脉冲。 (5)钝体尾流:对于细长钝体,漩涡脱落是在其两侧交替形成的。漩涡脱落时导致建筑物出现横向振动的主要原因。

线性系统极点配置和状态观测器基于设计(matlab) - 最新版本

一. 极点配置原理 假设原系统的状态空间模型为: ???=+=Cx y Bu Ax x 若系统是完全可控的,则可引入状态反馈调节器,且: 这时,闭环系统的状态空间模型为: ()x A BK x Bv y Cx =-+?? =? 二. 状态观测器设计原理 假设原系统的状态空间模型为: ???=+=Cx y Bu Ax x 若系统是完全可观的,则可引入全维状态观测器,且: ??(y y)??x Ax Bu G y Cx ?=++-??=?? 设?x x x =-,闭环系统的状态空间模型为: ()x A GC x =- 解得: (A GC)t (0),t 0x e x -=≥ 由上式可以看出,在t 0≥所有时间内,如果(0)x =0,即状态估计值x 与x 相等。如果(0)0x ≠,两者初值不相等,但是()A GC -的所有特征值具有负实部,这样 x 就能渐进衰减至零,观测器的状态向量?x 就能够渐进地逼近实际状态向量x 。状态逼近的速度取决于G 的选择和A GC -的特征配置。 三. 状态观测的实现 为什么要输出y 和输入u 对系统状态x 进行重构。 u Kx v =-+

证明 输出方程对t 逐次求导,并将状态方程x Ax Bu =+代入整理,得 2(n 1)(n 2)(n 3)21n n y Cx y CBu CAx y CBu CABu CA x y CBu CABu CA Bu CA x -----=??-=??--=????----=? 将等号左边分别用z 的各分量12,, ,n z z z 表示,有 121(n 1)(n 2)(n 3) 2 n n n y C z y CBu CA z z y CBu CABu x Qx z CA y CBu CABu CA Bu -----?? ???????? -?? ????? ? ? ?????==--==?? ????????????????????----?? ? 如果系统完全能观,则 rankQ n = 即 1?(Q Q)T T x Q z -= (类似于最小二乘参数估计) 综上所述,构造一个新系统z ,它是以原系统的输出y 和输入u ,其输出经过变 换1(Q Q)T T Q -后得到状态向量?x 。也就是说系统完全能观,状态就能被系统的输入输出以及各阶倒数估计出来。 四. 实例 给定受控系统为 再指定期望的闭环极点为12,341,1,2i λλλ*** =-=-±=-,观测器的特征值为 12,33,32i λλ=-=-±,试设计一个观测器和一个状态反馈控制系统,并画出系统 的组成结构图。 []0100000101000100 05 021000x x u y x ???? ????-????=+????????-???? =

(完整版)数据结构线性表的主要程序代码

数据结构顺序表的主要代码(LIZHULIN) 1./***有头结点的单链表的初始化、建立(表头插入、表尾插入)、求长度、插入、删除、输出***/ /***********单链表的初始化、建立、输出*****************/ #include #include typedef struct Lnode { /*定义线性表的单链表存储结构*/ int data; struct Lnode *next; }LinkList; /****************单链表的初始化*************************/ Initlist(LinkList *L) { /*动态申请存储空间*/ L = (LinkList *)malloc(sizeof(struct Lnode));/*建立头结点*/ L->next = NULL; } /*************建立一个带头结点的单链表,在表尾插入***************/ Create_L(LinkList *L,int n) { LinkList *p,*q; int i; Initlist(L); /*单链表初始化*/ q=L; printf("input the value\n"); for(i = n;i>0;--i) { p = (LinkList*)malloc(sizeof(struct Lnode)); scanf("%d",&p->data); /*输入元素值*/ q->next = p; p->next = NULL; q=p; /*插入到表尾*/ } } /* Create_L */ /*************建立一个带头结点的单链表,在表头插入************** Create_L(LinkList *L,int n) { LinkList *p; int i;

数据结构课后习题及答案

填空题(10 * 1’ = 10’) 一、概念题 .当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。 .当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。 .带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。 .循环队列的引入,目的是为了克服假溢出。 .长度为0的字符串称为空串。 .组成串的数据元素只能是字符。 .设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。 .为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。 .广义表的深度是广义表中括号的重数 .有向图G可拓扑排序的判别条件是有无回路。 .若要求一个稠密图的最小生成树,最好用Prim算法求解。 . 直接定址法法构造的哈希函数肯定不会发生冲突。 .排序算法所花费的时间,通常用在数据的比较和交换两大操作。 .通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。 .对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。 .存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。 .抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。 .一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。 .在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。 .在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。 .队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。 .栈是限定尽在表位进行插入或删除操作的线性表。 .在链式队列中,判定只有一个结点的条件是(Q->rear==Q->front)&&(Q->rear!=NULL)。 .已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node *p=(node *)malloc(node); p->next=x; p->next=NULL; if(r) {r->next=p; r=p;} else {r=p; f=p;}。 .循环队列的满与空的条件是(rear+1)%MAXSIZE==fornt和(front=-1&&rear+1==MAXSIZE)。 .串是一种特殊的线性表,其特殊性表现在数据元素都是由字符组成。 .字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的链式存储结构中其结点大小是可变的。 .所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数,则称该矩阵为稀疏矩阵。 .一维数组的逻辑结构是线性结构,存储结构是顺序存储结构;对二维或多维数组,分别按行优先和列优先两种不同的存储方式。 .在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第i列非0元素的个数。 网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。 .按排序过程中依据不同原则对内部排序方法进行分类,主要有选择排序﹑交换排序﹑插入排序归并排序等4类。 .在堆排序、快速排序和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。 .直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对是否出界的判断。 .设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。 .下列程序判断字符串s是否对称,对称则返回1,否则返回0;如?(“abba”)返回1,?(”abab”)返回0. Int f (char*s) { Int i=0,j=0; 求串长*/

结构动力学大作业

结构动力学作业 姓名: 学号:

目录 1.力插值法 (1) 1.1分段常数插值法 (1) 1.2分段线性插值法 (4) 2.加速度插值法 (7) 2.1常加速度法 (7) 2.2线加速度法 (9) 附录 (12) 分段常数插值法源程序 (12) 分段线性插值法源程序 (12) 常加速度法源程序 (13) 线加速度法源程序 (13)

1.力插值法 力插值法对结构的外荷载进行插值,分为分段常数插值法和分段线性插值法,这两种方法均适用于线性结构的动力反应计算。 1.1分段常数插值法 图1-1为一个单自由度无阻尼系统,结构的刚度为k ,质量为m ,位移为y (t ),施加的外力为P (t )。图1-2为矩形脉冲荷载的示意图,图中t d 表示作用的时间,P 0表示脉冲荷载的大小。 图1-1 单自由度无阻尼系统示意图 图1-2 矩形脉冲荷载示意图 对于一个满足静止初始条件的无阻尼单自由度体系来说,当施加一个t d 时间的矩形脉冲荷载,此时结构在t d 时间内的位移反应可以用杜哈梅积分得到: 0()sin ()2 (1cos )(1cos ) (0) t st st d P y t t d m t y t y t t T ωττω πω=-=-=-≤≤? (1-1) 如果结构本身有初始的位移和速度,那么叠加上结构自由振动的部分,结构的位移反应为: 02()cos sin (1cos ) (0 )st d y t y t y t t y t t T πωωω =+ +-≤≤ (1-2)

图1-3 分段常数插值法微段示意图 对于施加于结构任意大小的力,将其划分为Δt 的微段,每一段的荷载都为一个常数(每段相当于一个矩形的脉冲荷载),如图1-3所示,则将每一段的位移和速度写成增量的形式为: 1cos t sin t (1cos t)i i i i y P y y k ωωωω +=?+ ?+-? (1-3) i+1/sin t cos t sin t i i i y P y y k ωωωωω =-?+ ?+ ? (1-4) 程序流程图如下

状态观测器的设计——报告

东南大学自动化学院 实 验 报 告 课程名称: 自动控制基础 实验名称: 状态观测器的设计 院 (系): 自动化学院 专 业: 自动化 姓 名: 吴静 学 号: 08008419 实 验 室: 机械动力楼417室 实验组别: 同组人员: 实验时间:2011年05月13日 评定成绩: 审阅教师: 一、实验目的 1. 理解观测器在自动控制设计中的作用 2. 理解观测器的极点设置 3. 会设计实用的状态观测器 二、实验原理 如果控制系统采用极点配置的方法来设计,就必须要得到系统的各个状态,然后才能用状态反馈进行极点配置。然而,大多数被控系统的实际状态是不能直接得到的,尽管系统是可以控制的。怎么办?如果能搭试一种装置将原系统的各个状态较准确地取出来,就可以实现系统极点任意配置。于是提出了利用被控系统的输入量和输出量重构原系统的状态,并用反馈来消除原系统和重构系统状态的误差,这样原系统的状态就能被等价取出,从而进行状态反馈,达到极点配置改善系统的目的,这个重构的系统就叫状态观测器。 另外,状态观测器可以用来监测被控系统的各个参量。 观测器的设计线路不是唯一的,本实验采用较实用的设计。 给一个被控二阶系统,其开环传递函数是G (s )=12 (1)(1)K T s T s ++ ,12 K K K =观测器如图示。

设被控系统状态方程 构造开环观测器,X ∧ Y ∧ 为状态向量和输出向量估值 由于初态不同,估值X ∧ 状态不能替代被控系统状态X ,为了使两者初态跟随,采用输出误差反馈调节,加入反馈量H(Y-Y)∧ ,即构造闭环观测器,闭环观测器对重构造的参数误差也有收敛作用。 也可写成 X =(A-HC)X +Bu+HY Y CX ? ∧ ∧ ∧∧ = 只要(A-HC )的特征根具有负实部,状态向量误差就按指数规律衰减,且极点可任意配置,一般地,(A-HC )的收敛速度要比被控系统的响应速度要快。工程上,取小于被控系统最小时间的3至5倍,若响应太快,H 就要很大,容易产生噪声干扰。 实验采用X =A X +Bu+H(Y-Y)? ∧ ∧∧ 结构,即输出误差反馈,而不是输出反馈形式。 取:1212min 35 20,5,2,0.5,0.2K K T T t λ-= =====,求解12g g ?????? 三、实验设备: THBDC-1实验平台 THBDC-1虚拟示波器 Matlab/Simulink 软件 四、实验步骤 按要求设计状态观测器 (一) 在Matlab 环境下实现对象的实时控制 1. 将ZhuangTai_model.mdl 复制到E:\MATLAB6p5\work 子目录下,运行matlab ,打开ZhuangTai_model.mdl 注:‘实际对象’模块对应外部的实际被控对象,在simulink 下它代表计算机与外部接口: ● DA1对应实验面板上的DA1,代表对象输出,输出通过数据卡传送给计算机; ● AD1对应实验面板上的AD1,代表控制信号,计算机通过数据卡将控制信号送给实际对象;

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

实验报告——线性表应用一、实验目的 用单链表储存一元多项式,并实现两个多项式的相加运算。 二、实验内容 1.先创建链表,存储多项式; 2.输出多项式; 3.两个多项式相加; 4.输出多项式。 三、程序代码 #include #include #include //一元多项式链式储存的节点结构 typedef struct Polynode { float coef; int exp; struct Polynode * next; } Polynode , * Polylist; //建立一元多项式的链表 Polylist polycreate() { Polynode * head,* rear,* s; float c; int e; head=(Polynode* )malloc(sizeof(Polynode)); rear=head; scanf("%f,%d",&c,&e); while(c!=0) { s=(Polynode * )malloc(sizeof(Polynode)); s->coef=c; s->exp=e; rear->next=s; rear=s; scanf("%f,%d",&c,&e); } rear->next=NULL; return(head); } //输出多项式

void print(Polynode*L) { Polynode*p; p=L->next; printf("a="); if(p&&p->coef!=0) printf("%.2f*x^%d",p->coef,p->exp); while(p->next!=NULL) { if((p->next->coef)>0&&p) printf("+"); else printf("-"); p=p->next; printf("%.2f*x^%d",fabs(p->coef),p->exp); } } //多项式相加 void polyadd(Polylist polya,Polylist polyb) { Polynode*p,*q,*tail,*temp; int sum; p=polya->next; q=polyb->next; tail=polya; while (p!=NULL&&q!=NULL) { if(p->expexp) {tail ->next=p; tail=p;p=p->next;} else if (p->exp==q->exp); {sum=p->coef+q->coef; if(sum!=0) {p->coef=sum; tail->next=p;tail=p; p=p->next; temp=q;q=q->next;free(temp); } else { temp=p;p=p->next;free(temp); temp=q;q=q->next;free(temp); } }

数据结构试题答案

第一章概论 一、选择题 1、研究数据结构就是研究(D )。 A. 数据的逻辑结构 B. 数据的存储结构 C. 数据的逻辑结构和存储结构 D. 数据的逻辑结构、存储结构及其基本操作(研究非数值计算的程序设计问题中,计算机操作对象以及他们之间的关系和操作) 2、算法分析的两个主要方面是( A )。 A. 空间复杂度和时间复杂度 B. 正确性和简单性 C. 可读性和文档性 D. 数据复杂性和程序复杂性 3、具有线性结构的数据结构是( D )。(线性结构就是:在非空有限集合中,存在为一个被称为第一个的数据元素和最后一个元素,有除了第一个元素,集合中每一个元素均只有一个前驱,除了最后一个元素有唯一后继)(链表、栈、队列、数组、串) A. 图 B. 树 C. 广义表(线性表的推广) D. 栈 4、计算机中的算法指的是解决某一个问题的有限运算序列,它必须具备输入、输出、(B )等5个特性。 A. 可执行性、可移植性和可扩充性 B. 可执行性、有穷性和确定性 C. 确定性、有穷性和稳定性 D. 易读性、稳定性和确定性 5、下面程序段的时间复杂度是( C )。 for(i=0;i

6、算法是(D )。为了解决某一问题而规定的一个有限长的操作序列 A. 计算机程序 B. 解决问题的计算方法 C. 排序算法 D. 解决问题的有限运算序列 7、某算法的语句执行频度为(3n+nlog2n+n2+8),其时间复杂度表示(C )。 A. O(n) B. O(nlog2n) C. O(n2) D. O(log2n) 8、下面程序段的时间复杂度为( C )。 i=1; while(i<=n) i=i*3; A. O(n) B. O(3n) C. O(log3n) D. O(n3) 9、数据结构是一门研究非数值计算的程序设计问题中计算机的数据元素以及它们之间的(B )和运算等的学科。(关系和操作) A. 结构 B. 关系 C. 运算 D. 算法 10、下面程序段的时间复杂度是( A )。 i=s=0; while(s

哈工大结构力学题库七篇(I)

第七章影响线 一判断题 1. 图示梁AB与A0B0,其截面C与C0弯矩影响线和剪力影响线完全相同。(X) 题1图题2图 2. 图示结构Q E影响线的AC段纵标不为零。(X) 3. 图示梁K截面的M K影响线、Q K影响线形状如图a、b所示。 4. 图示梁的M C影响线、Q C影响线形状如图a、b所示。 5. 图示梁的M C影响线、M B影响线形状如图a、b所示。 6. 图示结构M B影响线的AB段纵标为零。 7. 图示梁跨中C截面弯矩影响线的物理意义是荷载P=1作用在截面C的弯矩图形。(X) 8. 用静力法作静定结构某量值的影响线与用机动法作该结构同一量值的影响线是不等价 的。(X) 9. 求某量值影响线方程的方法,与恒载作用下计算该量值的方法在原理上是相同的。(√) 10. 影响线是用于解决活载作用下结构的计算问题,它不能用于恒载作用下的计算。(X) 11. 移动荷载是指大小,指向不变,作用位置不断变化的荷载,所以不是静力荷载。(X) 12. 用静力法作影响线,影响线方程中的变量x代表截面位置的横坐标。(X) 13. 表示单位移动荷载作用下某指定截面的内力变化规律的图形称为内力影响线。(√) 14. 简支梁跨中截面弯矩的影响线与跨中有集中力P时的M图相同。(X) 15. 简支梁跨中C截面剪力影响线在C截面处有突变。(√) 16. 绝对最大弯矩是移动荷载下梁的各截面上最大的弯矩。(√) 17. 静定结构及超静定结构的内力影响线都是由直线组成。(X) 18. 图示结构Q C影响线的CD段为斜直线。 19. 图示结构K断面的剪力影响线如图b所示。(√) 题19图 20. 用机动法作得图a所示Q B左结构影响线如图b。 题20图题21图 21. 图示结构a杆的内力影响线如图b所示 22. 荷载处于某一最不利位置时,按梁内各截面得弯矩值竖标画出得图形,称为简支梁的弯

三阶随动系统串联校正的频率

毕 业 设 计 (论 文) 设计(论文)题目:_ 三阶随动系统串联校正的频率 __ 特性法设计及仿真研究_______ 单 位(系别):______自动化系______ 学 生 姓 名:___ 陈海龙_________ 专 业:__电气工程及其自动化__ 班 级:___ 05111106________ 学 号:___ 0511110629______ 指 导 教 师:_______汪纪锋_________ 答辩组负责人:______________________ 填表时间: 20 15 年 6 月 重庆邮电大学移通学院教务处制 编 号:____________ 审定成绩:____________

重庆邮电大学移通学院毕业设计(论文)任务书 设计(论文)题目三阶随动系统串联校正的频率特性法设计及仿真研究 学生姓名陈海龙系别自动化系专业电气工程及其自动化班级 05111106 指导教师汪纪峰职称教授联系电话 42871150 教师单位自动化系下任务日期__2014 __年_12_月_ 20_ 日 毕业设计(论文)开始后一周内完成。

重庆邮电大学移通学院 毕业设计任务书(简明)技术资料 一、设计题目: 题目16 三阶随动系统串联校正的频率特性法设计及仿真研究 二、系统说明: 设三阶系统开环结构如下 (s)(s)(s)(0.11)(0.21) y k Gp r s s s =++ 三、系统参量: 校正前:系统输入信号:r (t );系统输出信号:y (t ); 校正后:系统输入信号:u (t );系统输出信号:y (t ); 四、设计指标: 1. 设定:在输入为r (t )=u (t )=a+bt ,(其中:a=4,b=1 sec. ) 2. 在保证静态速度误差系数Kv =30 1sec.的前提下,其动态期望指标: 040?γ≥ ; 2.3c rad s ω≥ 。 五、设计要求: 基于频率特性法,试设计一个串联校正闭环系统(如图示),以满足系统设计指 标。 重庆邮电大学移通学院 自动化系 指导教师: 汪纪峰 2014.12

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

实验报告 课程名称____数据结构上机实验__________ 实验项目______线性表的应用____________实验仪器________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) //实现加法功能。

相关文档
最新文档