文档库 最新最全的文档下载
当前位置:文档库 › 数据结构重难点

数据结构重难点

数据结构重难点
数据结构重难点

数据结构设计与技巧

数据结构设计与技巧讲义 【考查目标】 1.理解数据结构的基本概念;掌握数据的逻辑结构、存储结构及其差异,以及各种基本操作的实现。 2.掌握基本的数据处理原理和方法的基础上,能够对算法进行设计与分析。 3.能够选择合适的数据结构和方法进行问题求解。 一、线性表 (一)线性表的定义和基本操作 (二)线性表的实现 1.顺序存储结构 2.链式存储结构 3.线性表的应用 二、栈、队列和数组 (一)栈和队列的基本概念 (二)栈和队列的顺序存储结构 (三)栈和队列的链式存储结构 (四)栈和队列的应用 (五)特殊矩阵的压缩存储 三、树与二叉树 (一)树的概念 (二)二叉树 1.二叉树的定义及其主要特征 2.二叉树的顺序存储结构和链式存储结构 3.二叉树的遍历 4.线索二叉树的基本概念和构造

5.二叉排序树 6.平衡二叉树 (三)树、森林 1.书的存储结构 2.森林与二叉树的转换 3.树和森林的遍历 (四)树的应用 1.等价类问题 2.哈夫曼(Huffman)树和哈夫曼编码 四、图 (一)图的概念 (二)图的存储及基本操作 1.邻接矩阵法 2.邻接表法 (三)图的遍历 1.深度优先搜索 2.广度优先搜索 (四)图的基本应用及其复杂度分析 1.最小(代价)生成树 2.最短路径 3.拓扑排序 4.关键路径 五、查找 (一)查找的基本概念 (二)顺序查找法 (三)折半查找法 (四)B-树

(五)散列(Hash)表及其查找 (六)查找算法的分析及应用 六、内部排序 (一)排序的基本概念 (二)插入排序 1.直接插入排序 2.折半插入排序 (三)气泡排序(bubble sort) (四)简单选择排序 (五)希尔排序(shell sort) (六)快速排序 (七)堆排序 (八)二路归并排序(merge sort) (九)基数排序 (十)各种内部排序算法的比较 (十一)内部排序算法的应用 【知识点解析】 1.线性表 线性表是一种最简单的数据结构,在线性表方面,主要考查线性表的定义和基本操作、线性表的实现。在线性表实现方面,要掌握的是线性表的存储结构,包括顺序存储结构和链式存储结构,特别是链式存储结构,是考查的重点。另外,还要掌握线性表的基本应用。 2.栈、队列和数组 栈和队列是两种特殊的线性表,在这方面,要求我们掌握栈和队列的基本概念,以及他们之间的区别。对于栈和队列的存储结构(包括顺序存储结构、链式存储结构)要有较深的理解,对于栈和队列的应用,例如,排队问题、子程序调用问题、表达式问题等,要搞清楚。

钢结构用重点难点分析

钢结构用重点难点分析 WTD standardization office【WTD 5AB- WTDK 08- WTD 2C】

钢结构焊接分项工程重点难点分析要求施工单位对进场材料必须设专人现场验收,在自检合格的基础上向监理报审。监理对运至现场的各种材料要进行检查,发现对材料质量有怀疑时,有权提出禁止进场。 1.建筑钢结构用钢材及焊接填充材料的选用应符合设计图的要求,并应具有钢厂和焊接材料厂出具的质量证明书或检验报告;其化学成分、力学性能和其它质量要求必须符合国家现行标准规定。当采用其它钢材和焊接材料替代设计选用的材料时,必须经原设计单位同意。 2.钢材的成分、性能复验应符合国家现行有关工程质量验收标准的规定;大型、重型及特殊钢结构的主要焊缝采用的焊接填充材料应按生产批号进行复验。复验应由国家技术质量监督部门认可的质量监督检测机构进行。 3.钢结构工程中选用的新材料必须经过新产品鉴定。钢材应由生产厂提供焊接性资料、指导性焊接工艺、热加工和热处理工艺参数、相应钢材的焊接接头性能数据等资料;焊接材料应由生产厂提供贮存及焊前烘焙参数规定、熔敷金属成分、性能鉴定资料及指导性施焊参数,经专家论证、评审和焊接工艺评定合格后,方可在工程中采用。 4.焊接T形、十字形、角接接头,当其翼缘板厚度等于或大于40mm 时,设计宜采用抗层状撕裂的钢板。钢材的厚度方向性能级别应根据工程的结构类型、节点形式及板厚和受力状态的不同情况选择。

钢板厚度方向性能能级别Z15、Z25、Z35相应的含硫量、断面收缩率应符合附录A的规定。 5.焊条应符合现行国家标准《碳钢焊条》(GB/T5117)、《低合金钢焊条》(GB/T5118)的规定。外观不应有药皮脱落,焊芯生锈等缺陷。 6.焊丝应符合现行国家标准《熔化焊用钢丝》(GB/T14957)、《气体保护电弧焊用碳钢、低合金钢焊丝》(GB/T8110)及《碳钢药芯焊丝》(GB/T10045)、《低合金钢药芯焊丝》(GB/T17493)的规定。 7.埋弧焊用焊丝和焊剂应符合现行国家标准《埋弧焊用碳钢焊丝和焊剂》(GB/T5293)、《低合金钢埋弧焊用焊剂》(GB/T12470)的规定,焊剂不应受潮结块。 8.气体保护焊使用的氩气应符合现行国家标准《氩气》(GB/T4842)的规定,其纯度不应低于%。 9.气体保护焊使用的二氧化碳气体应符合国家现行标准《焊接用二氧化碳》(HG/T2537)的规定,大型、重型及特殊钢结构工程中主要构件的重要焊接节点采用的二氧化碳气体质量应符合该标准中优等品的要求,即其二氧化碳含量(V/V)不得低于%,水蒸气与乙醇总含量(m/m)不得高于%,并不得检出液态水。 10.焊钉及焊接瓷环的规格、尺寸及偏差应符合现行国家标准《圆柱头焊钉》(GB10433)中的规定。检查数量:按量抽查1%,且不应小于10套。 11.当采用其它焊接材料替代设计选用的材料时,必须经原设计单位同意。

大学数据结构期末知识点重点总结(考试专用)

.. ;.. 第一章 概论 1.数据结构描述的是按照一定逻辑关系组织起来的待处理数据元素的表示及相关操作,涉及数据的逻辑结构、存储结构和运算 2.数据的逻辑结构是从具体问题抽象出来的数学模型,反映了事物的组成结构及事物之间的逻辑关系 可以用一组数据(结点集合K )以及这些数据之间的 一组二元关系(关系集合R )来表示:(K, R) 结点集K 是由有限个结点组成的集合,每一个结点代表一个数据或一组有明确结构的数据 关系集R 是定义在集合K 上的一组关系,其中每个关系r (r ∈R )都是K ×K 上的二元关系 3.数据类型 a.基本数据类型 整数类型(integer)、实数类型(real)、布尔类型(boolean)、字符类型(char )、指针类型(pointer ) b.复合数据类型 复合类型是由基本数据类型组合而成的数据类型;复合数据类型本身,又可参与定义结构更为复杂的结点类型 4.数据结构的分类:线性结构(一对一)、树型结构(一对多)、图结构(多对多) 5.四种基本存储映射方法:顺序、链接、索引、散列 6.算法的特性:通用性、有效性、确定性、有穷性 7.算法分析:目的是从解决同一个问题的不同算法中选择比较适合的一种,或者对原始算法进行改造、加工、使其优化 8.渐进算法分析 a .大Ο分析法:上限,表明最坏情况 b .Ω分析法:下限,表明最好情况 c .Θ分析法:当上限和下限相同时,表明平均情况 第二章 线性表 1.线性结构的基本特征 a.集合中必存在唯一的一个“第一元素” b.集合中必存在唯一的一个“最后元素” c.除最后元素之外,均有唯一的后继 d.除第一元素之外,均有唯一的前驱 2.线性结构的基本特点:均匀性、有序性 3.顺序表 a.主要特性:元素的类型相同;元素顺序地存储在连续存储空间中,每一个元素唯一的索引值;使用常数作为向量长度 b. 线性表中任意元素的存储位置:Loc(ki) = Loc(k0) + i * L (设每个元素需占用L 个存储单元) c. 线性表的优缺点: 优点:逻辑结构与存储结构一致;属于随机存取方式,即查找每个元素所花时间基本一样 缺点:空间难以扩充 d.检索:ASL=【Ο(1)】 e .插入:插入前检查是否满了,插入时插入处后的表需要复制【Ο(n )】 f.删除:删除前检查是否是空的,删除时直接覆盖就行了【Ο(n )】 4.链表 4.1单链表 a.特点:逻辑顺序与物理顺序有可能不一致;属于顺序存取的存储结构,即存取每个数据元素所花费的时间不相等 b.带头结点的怎么判定空表:head 和tail 指向单链表的头结点 c.链表的插入(q->next=p->next; p->next=q;)【Ο(n )】 d.链表的删除(q=p->next; p->next = q->next; delete q;)【Ο(n )】 e.不足:next 仅指向后继,不能有效找到前驱 4.2双链表 a.增加前驱指针,弥补单链表的不足 b.带头结点的怎么判定空表:head 和tail 指向单链表的头结点 c.插入:(q->next = p->next; q->prev = p; p->next = q; q->next->prev = q;) d.删除:(p->prev->next = p->next; p->next->prev = p->prev; p->prev = p->next = NULL; delete p;) 4.3顺序表和链表的比较 4.3.1主要优点 a.顺序表的主要优点 没用使用指针,不用花费附加开销;线性表元素的读访问非常简洁便利 b.链表的主要优点 无需事先了解线性表的长度;允许线性表的长度有很大变化;能够适应经常插入删除内部元素的情况 4.3.2应用场合的选择 a.不宜使用顺序表的场合 经常插入删除时,不宜使用顺序表;线性表的最大长度也是一个重要因素 b.不宜使用链表的场合 当不经常插入删除时,不应选择链表;当指针的存储开销与整个结点内容所占空间相 比其比例较大时,应该慎重选择 第三章 栈与队列 1.栈 a.栈是一种限定仅在一端进行插入和删除操作的线性表;其特点后进先出;插入:入栈(压栈);删除:出栈(退栈);插入、删除一端被称为栈顶(浮动),另一端称为栈底(固定);实现分为顺序栈和链式栈两种 b.应用: 1)数制转换 while (N) { N%8入栈; N=N/8;} while (栈非空){ 出栈; 输出;} 2)括号匹配检验 不匹配情况:各类括号数量不同;嵌套关系不正确 算法: 逐一处理表达式中的每个字符ch : ch=非括号:不做任何处理 ch=左括号:入栈 ch=右括号:if (栈空) return false else { 出栈,检查匹配情况, if (不匹配) return false } 如果结束后,栈非空,返回false 3)表达式求值 3.1中缀表达式: 计算规则:先括号内,再括号外;同层按照优先级,即先乘*、除/,后加+、减-;相同优先级依据结合律,左结合律即为先左后右 3.2后缀表达式: <表达式> ::= <项><项> + | <项> <项>-|<项> <项> ::= <因子><因子> * |<因子><因子>/|<因子> <因子> ::= <常数> ? <常数> ::= <数字>|<数字><常数> <数字> ∷= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 3.3中缀表达式转换为后缀表达式 InfixExp 为中缀表达式,PostfixExp 为后缀表达式 初始化操作数栈OP ,运算符栈OPND ;OPND.push('#'); 读取InfixExp 表达式的一项 操作数:直接输出到PostfixExp 中; 操作符: 当‘(’:入OPND; 当‘)’:OPND 此时若空,则出错;OPND 若非空,栈中元 素依次弹出,输入PostfixExpz 中,直到遇到‘(’为止;若 为‘(’,弹出即可 当‘四则运算符’:循环(当栈非空且栈顶不是‘(’&& 当前运算符优先级>栈顶运算符优先级),反复弹出栈顶运 算符并输入到PostfixExp 中,再将当前运算符压入栈 3.4后缀表达式求值 初始化操作数栈OP ; while (表达式没有处理完) { item = 读取表达式一项; 操作数:入栈OP ; 运算符:退出两个操作数, 计算,并将结果入栈} c.递归使用的场合:定义是递归的;数据结构是递归的;解决问题的方法是递归的 2.队列 a.若线性表的插入操作在一端进行,删除操作在另一端进行,则称此线性表为队列 b.循环队列判断队满对空: 队空:front==rear ;队满:(rear+1)%n==front 第五章 二叉树 1.概念 a. 一个结点的子树的个数称为度数 b.二叉树的高度定义为二叉树中层数最大的叶结点的层数加1 c.二叉树的深度定义为二叉树中层数最大的叶结点的层数 d.如果一棵二叉树的任何结点,或者是树叶,或者恰有两棵非空子树,则此二叉树称作满二叉树 e.如果一颗二叉树最多只有最下面的两层结点度数可以小于2;最下面一层的结点都集中在该层最左边的位置上,则称此二叉树为完全二叉树 f.当二叉树里出现空的子树时,就增加新的、特殊的结点——空树叶组成扩充二叉树,扩充二叉树是满二叉树 外部路径长度E :从扩充的二叉树的根到每个外部结点(新增的空树叶)的路径长度之和 内部路径长度I :扩充的二叉树中从根到每个内部结点(原来二叉树结点)的路径长度之和 2.性质 a. 二叉树的第i 层(根为第0层,i ≥0)最多有2^i 个结点 b. 深度为k 的二叉树至多有2k+1-1个结点 c. 任何一颗二叉树,度为0的结点比度为2的结点多一个。n0 = n2 + 1 d. 满二叉树定理:非空满二叉树树叶数等于其分支结点数加1 e. 满二叉树定理推论:一个非空二叉树的空子树(指针)数目等于其结点数加1 f. 有n 个结点(n>0)的完全二叉树的高度为?log2(n+1)?,深度为?log2(n+1)?? g. 对于具有n 个结点的完全二叉树,结点按层次由左到右编号,则有: 1) 如果i = 0为根结点;如果i>0,其父结点编号是 (i-1)/2 2) 当2i+1∈N ,则称k 是k'的父结 点,k'是的子结点 若有序对∈N , 则称k'k ″互为兄弟 若有一条由 k 到达ks 的路径,则 称k 是的祖先,ks 是k 的子孙 2.树/森林与二叉树的相互转换 a.树转换成二叉树 加线: 在树中所有兄弟结点之间加一连线 抹线: 对每个结点,除了其最左孩子外,与其余孩 子之间的连线 旋转: 45° b.二叉树转化成树 加线:若p 结点是双亲结点的左孩子,则将的右孩子,右孩子的右孩子,所有右孩子,都与p 的双亲用线连起来 线 调整:将结点按层次排列,形成树结构 c.森林转换成二叉树 将各棵树分别转换成二叉树 将每棵树的根结点用线相连 为轴心,顺时针旋转,构成二叉树型结构 d.二叉树转换成森林 抹线:将二叉树中根结点与其右孩子连线,及沿右分支搜索到 的所有右孩子间连线全部抹掉,使之变成孤立的二叉树 还原:将孤立的二叉树还原成树 3.周游 a.先根(次序)周游 若树不空,则先访问根结点,然后依次先根周游各棵子树 b.后根(次序)周游 若树不空,则先依次后根周游各棵子树,然后访问根结点 c.按层次周游 若树不空,则自上而下自左至右访问树中每个结点 4.存储结构 “左子/右兄”二叉链表表示法:结点左指针指向孩子,右结点指向右兄弟,按树结构存储,无孩子或无右兄弟则置空 5. “UNION/FIND 算法”(等价类) 判断两个结点是否在同一个集合中,查找一个给定结点的根结点的过程称为FIND 归并两个集合,这个归并过程常常被称为UNION “UNION/FIND ”算法用一棵树代表一个集合,如果两个结点在同一棵树中,则认为它们在同一个集合中;树中的每个结点(除根结点以外)有仅且有一个父结点;结点中仅需保存父指针信息,树本身可以 存储为一个以其结点为元素的数组 6.树的顺序存储结构 a. 带右链的先根次序表示法 在带右链的先根次序表示中,结点按先根次序顺序存储在一片连续的存储单元中 每个结点除包括结点本身数据外,还附加两个表示结构的信息字段,结点的形式为: info 是结点的数据;rlink 是右指针,指向结点的下一个兄弟;ltag 是一个左标记,当结点没有子结点(即对应二 叉树中结点没有左子结点时),ltag 为 1,否则为 0 b. 带双标记位的先根次序表示法 规定当结点没有下一个兄弟(即对应的二叉树中结点没有右子结点时)rtag 为1,否则为0 c. 带双标记位的层次次序表示法 结点按层次次序顺序存储在一片连续的存储单元中 第七章 图 1.定义 a.假设图中有n 个顶点,e 条边: 含有e=n(n-1)/2条边的无向图称作完全图 含有e=n(n-1) 条弧的有向图称作有向完全图 若边或弧的个数e < nlogn ,则称作稀疏图,否则称作稠密图 b. 顶点的度(TD)=出度(OD)+入度(ID) 顶点的出度: 以顶点v 为弧尾的弧的数目 顶点的入度: 以顶点v 为弧头的弧的数目 c.连通图、连通分量 若图G 中任意两个顶点之间都有路径相通,则称此图为连通图 若无向图为非连通图,则图中各个极大连通子图称作此图的连通分量 d.强连通图、强连通分量 对于有向图,若任意两个顶点之间都存在一条有向路径,则称此有向图为强连通图 否则,其各个极大强连通子图称作它的强连通分量 e.生成树、生成森林 假设一个连通图有n 个顶点和e 条边,其中n-1条边和n 个顶点构成一个极小连通子图,称该极小连通子图为此连通图的生成树 对非连通图,则将由各个连通分量构成的生成树集合称做此非连通图的生成森林 2.存储结构 a.相邻矩阵表示法 表示顶点间相邻关系的矩阵 若G 是一个具有n 个顶点的图,则G 的相邻矩阵是如下定义的n ×n 矩阵: A[i,j]=1,若(Vi, Vj)(或)是图G 的边 A[i,j]=0,若(Vi, Vj)(或)不是图G 的边 b.邻接表表示法 为图中每个顶点建立一个单链表,第i 个单链表中的结点表示依附于顶点Vi 的边(有向图中指以Vi 为尾的弧)(建立单链表时按结点顺序建立) 3.周游 a. 深度优先周游: 从图中某个顶点V0出发,访问此顶点,然后依次从V0的各个未被访问的邻接点出发,深度优先搜索遍历图中的其余顶点,直至图中所有与V0有路径相通的顶点都被访问到为止 b. 广度优先周游: 从图中的某个顶点V0出发,并在访问此顶点之后依次访问V0的所有未被访问过的邻接点,随后按这些顶点被访问的先后次序依次访问它们的邻接点,直至图中所有与V0有路径相通的顶点都被访问到为止,若此时图中尚有顶点未被访问,则另选图中一个未曾被访问的顶点作起始点,重复上述过程,直至图中所有顶点都被访问到为止 4.拓扑排序 拓扑排序的方法是:1)选择一个入度为0的顶点且输出之 2)从图中删掉此顶点及所有的出边 3)回到第1步继续执行,直至图空或者图不空但找不到无前驱(入度为0)的顶点为止 5.单源最短路径(Dijkstra 算法) 6.每对顶点间的最短路径(Floyd 算法) 7.最小生成树 a.Prim 算法 b.Kruskal 算法 c.两种算法比较:Prim 算法适合稠密图,Kruskal 算法适合稀疏图 第八章 内排序 算法 最大时间 平均时间 直接插入排序 Θ(n2) Θ(n2) 冒泡排序 Θ(n2) Θ(n2) 直接选择排序 Θ(n2) Θ(n2) Shell 排序 Θ(n3/2) Θ(n3/2) 快速排序 Θ(n2) Θ(nlog n) 归并排序 Θ(nlog n) Θ(nlog n) 堆排序 Θ(nlog n) Θ(nlog n) 桶式排序 Θ(n+m) Θ(n+m) 基数排序 Θ(d ·(n+r)) Θ(d ·(n+r)) 最小时间 S(n) 稳定性 Θ(n) Θ(1) 稳定 Θ(n) Θ(1) 稳定 Θ(n2) Θ(1) 不稳定 Θ(n3/2) Θ(1) 不稳定 Θ(nlog n) Θ(log n) 不稳定 Θ(nlog n) Θ(n) 稳定 Θ(nlog n) Θ(1) 不稳定 Θ(n+m) Θ(n+m) 稳定 Θ(d ·(n+r)) Θ(n+r) 稳定 第十章 检索 1.平均检索长度(ASL )是待检索记录集合中元素规模n 的函数, 其定义为: ASL= Pi 为检索第i 个元素的概率;Ci 为找到第i 个元素所需的比较次数 2.散列 a.除余法 用关键码key 除以M(取散列表长度),并取余数作为散列地址 散列函数为:hash(key) = key mod M b.解决冲突的方法 开散列方法:把发生冲突的关键码存储在散列表主表之外(在主表外拉出单链表) 闭散列方法:把发生冲突的关键码存储在表中另一个位置上 c.线性探查 基本思想:如果记录的基位置存储位置被占用,就在表中下移,直到找到一个空存储位置;依次探查下述地址单元:d0+1,d0+2,...,m-1,0, 1,..., d0-1;用于简单线性探查的探查函数是:p(K, i) = i d.散列表的检索 1.假设给定的值为K ,根据所设定的散列函数h ,计算出散列地址h(K) 2. 如果表中该地址对应的空间未被占用,则检索失败,否则将该地址中的值与K 比较 3. 若相等则检索成功;否则,按建表时设定的处理冲突方法查找探查序列的下一个地址,如此反复下去,直到某个地址空间未被占用(可以插入),或者关键码比较相等(有重复记录,不需插入)为止 e.散列表的删除:删除后在删除地点应加上墓碑(被删除标记) f.散列表的插入:遇到墓碑不停止,知道找到真正的空位置 第十一章 索引技术 1.概念: a.主码:数据库中的每条记录的唯一标识 b.辅码:数据库中可以出现重复值的码 2.B 树 a.定义:B 树定义:一个m 阶B 树满足下列条件: (1) 每个结点至多有m 个子结点; (2) 除根和叶外 其它每个结点至少有??个子结点; (3) 根结点至少有两个子结点 例外(空树,or 独根) (4) 所有的叶在同一层,可以有??- 1到m-1个关键码 (5) 有k 个子结点的非根结点恰好包含k-1个关键码 b.查找 在根结点所包含的关键码K1,…,Kj 中查找给定的关键码值(用顺序检索(key 少)/二分检索(key 多));找到:则检索成功;否则,确定要查的关键码值是在某个Ki 和Ki+1之间,于是取pi 所指结点继续查找;如果pi 指向外部结点,表示检索失败. c.插入 找到的叶是插入位置,若插入后该叶中关键码个数

结构力学重难点完美复习资料

文档 结构力学重难点复习资料 第二章结构的几何构成分析 1、首先必须深刻理解几个基本概念,这几个概念层层递进。 ●几何不变体系:不计材料应变情况下,体系的位置和形状不变。 在几何构成分析中与荷载无关,各个杆件都是刚体。 ●刚片:形状不变的物体,也就是刚体。 在几何构成分析中,刚片的选取非常重要,也非常灵活,可大可小,小至一根杆,大至地基基础,皆可视为刚片。 ●自由度:体系运动时可以独立改变的坐标的数目。 在平面,一点有2个自由度,一刚片有3个自由度。 ●约束:减少自由度的装置。 一根链杆(或链杆支座)相当于1个约束; 一个铰(或铰支座)相当于2个约束,注意两根链杆和一个铰在约束方面的功能完 全可等同,可根据几何构成分析的需要相互转换,另外注意瞬铰的概念,两根链杆 直接铰接在一点,该点可视为实铰,两根链杆延长后相交在一点,该点则是瞬铰,一个瞬铰也相当于2个约束,两根链杆若平行,瞬铰在平行方向的无穷远处; 一个刚结点(或固定端)相当于3个约束。 ●多余约束:增加一个约束,体系的自由度并不减少,该约束就是多余约束。 注意一个约束是否多余约束,必须视必要约束而定。只有必要约束确定后才能确定多余约束,不能直接说哪个约束是多余约束。 2、必须深刻理解几何不变体系的组成规律。 教材上列出4个规律,其实基本的规律只有一个,就是三角形规律,即小学数学就传授的“三角形是稳定的”。 片法则、三刚片法则中“三铰不共线”、“三链杆不互相平行或相交于一点”的条件,若不满足,则为瞬变体系。 3、给大家推荐几何构成分析的基本思路和步骤 ●若有基础,首先看基础以外部分与基础的联系数:等于3,则只分析基础以外部分, 若几何不变,则整体几何不变,若几何可变,则整体几何可变;不等于3,则须将

数据结构以及C语言常问与难点

数据结构以及C语言常问与难点 1.序言 2.常问与难点,为避免重复发帖,特设此帖并置顶,以供浏览查阅。 3.内容主要是将本版的好帖子收集起来,并加以整理,仅给出知识点分析与问题解答,并不给出原帖链接,致歉。 4.本版中的好东西会慢慢添加进来(各位版主齐心协力,每天添加一个知识点,用不了多久就会很强大),本帖观点只 是各位版主和我个人的分析,不一定尽善尽美,但一定是尽心尽力。各位热心研友如有修正和补充,请在回复中说明。 5.特代表研友感谢各位版主的辛勤奉献,代表版主感谢热心研友对王道的支持(呵呵)。特别地,祝备考10的研友们一 切顺利,考上理想的学校。珍惜时间,努力才是王道。 1.目录,共占用一个代码区 2. 3. 1.如下结构体定义的全部细节解释,附有完整程序。涉及知识点:结构体定义,typedef,指针使用的部分知识。 4.typedef struct LNode{ 5. ElemType data; 6. struct LNode *next; 7.} LNode, *LinkList; 8. 9. 2.符号&的含义,指针进阶。涉及知识点:引用机制,实参与形参,C语言中地址与指针(以及指向指针的指针),指 针的传递(暂不涉及数组与指针的知识,将在以后介绍)。 10. 11. 3.如下方式动态分配内存的全部细节解释。涉及知识点:动态分配内存,define,强制类型转换,malloc(),顺序 表存储结构,顺序表与数组,链表结点的内存分配,指针细节,附完整程序。 12.L.elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType)); 复制代码 1.正文,每个问题占用一个代码区 复制代码 1. 1.如下结构体定义的全部细节解释,附有完整程序。涉及知识点:结构体定义,typedef,指针使用的部分知识。 2.typedef struct LNode{ 3. ElemType data; 4. struct LNode *next; 5.} LNode, *LinkList; 6. 7.如下是一个最简单的结构体定义:

数据结构期末总结

您现在的位置:希赛教育首页> 自考学院> 数据结构与算法> 正文 数据结构第三章(栈与队列)习题参考答案https://www.wendangku.net/doc/7013018723.html,作者:自考频道来源:希赛教育2008年1月5日发表评论进入社区 一、基础知识题 3.1 设将整数1,2,3,4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请回答下述问题: (1)若入、出栈次序为Push(1), Pop(),Push(2),Push(3), Pop(), Pop( ),Push(4), Pop( ),则出栈的数字序列为何(这里Push(i)表示i进栈,Pop( )表示出栈)? (2) 能否得到出栈序列1423和1432?并说明为什么不能得到或者如何得到。 (3)请分析1,2 ,3 ,4 的24种排列中,哪些序列是可以通过相应的入出栈操作得到的。 3.2 链栈中为何不设置头结点? 答:链栈不需要在头部附加头结点,因为栈都是在头部进行操作的,如果加了头结点,等于要对头结点之后的结点进行操作,反而使算法更复杂,所以只要有链表的头指针就可以了。 3.3 循环队列的优点是什么? 如何判别它的空和满? 答:循环队列的优点是:它可以克服顺序队列的"假上溢"现象,能够使存储队列的向量空间得到充分的利用。判别循环队列的"空"或"满"不能以头尾指针是否相等来确定,一般是通过以下几种方法:一是另设一布尔变量来区别队列的空和满。二是少用一个元素的空间。每次入队前测试入队后头尾指针是否会重合,如果会重合就认为队列已满。三是设置一计数器记录队列中元素总数,不仅可判别空或满,还可以得到队列中元素的个数。

3.4 设长度为n的链队用单循环链表表示,若设头指针,则入队出队操作的时间为何? 若只设尾指针呢? 答:当只设头指针时,出队的时间为1,而入队的时间需要n,因为每次入队均需从头指针开始查找,找到最后一个元素时方可进行入队操作。若只设尾指针,则出入队时间均为1。因为是循环链表,尾指针所指的下一个元素就是头指针所指元素,所以出队时不需要遍历整个队列。 3.5 指出下述程序段的功能是什么? (1) void Demo1(SeqStack *S){ int i; arr[64] ; n=0 ; while ( StackEmpty(S)) arr[n++]=Pop(S); for (i=0, i< n; i++) Push(S, arr[i]); } //Demo1 (2) SeqStack S1, S2, tmp; DataType x; ...//假设栈tmp和S2已做过初始化 while ( ! StackEmpty (&S1)) { x=Pop(&S1) ; Push(&tmp,x);

结构力学重点理解

(1)第2章第2节的重点、难点剖析 一. 重点剖析 1. 自由度(也称实际自由度,用S表示,英文Degree of Freedom,简写为DOF)。这个概念中要特别注意“独立”这两个字,“独立”的含义是指几何坐标不被包含在函数关系中,彼此间也不呈函数关系,即坐标的变化既不受限,亦不会相互影响。S取为不小于0的整数,当S=0时体系几何不变;S>0时,体系几何可变。 2. 多余约束和必要约束。从定义可知,多余约束的增减不改变S,而必要约束的增减会导致S变化。因此,多余约束决定不了体系的几何组成性质。在一个体系中,多余约束的个数是确定的,但是选取多余约束的方法是多样的。 3. 链杆。在第2章中,链杆是指仅通过两铰与体系其余部分相连的杆。这两铰不区分是铰结点还是铰支座。 二. 难点剖析 1. 约束在数学上的表现。约束是减少自由度的装置,数学上如何表述它呢?从自由度要求是彼此独立的坐标这个概念里,就能找出答案。要减少体系的自由度(或者说增加体系的约束),只要通过建立使坐标间相关联的函数关系或者方程,使它们彼此不再独立,就实现了自由度的减少。而这样的函数关系或者方程,就称为约束方程(其性质是几何方程)。 (2)第2章第3~5节的重点、难点剖析 一. 重点剖析 1. 计算自由度W>0,体系几何可变;W≤0,无法确定体系是否几何不变。 2. 二元体的相对性。二元体因为在附加于体系上时,有先后顺序(即依次附加),因此谈二元体,就不能离开其所基于的那个体系。即需要考虑二元体是相对一部分体系而言,还是相对整体而言。相对于体系某一部分是二元体的装置,未必是相对于整体的二元体。根据这个特点,在利用二元体规则做分析时,一定要按先付加的二元体后去除(或后附加的二元体先去除)的次序来做。 3. 几何不变体系三个组成规则的前提条件。 1)二元体规则:要求构成二元体装置的两链杆不能共线;

2018考研计算机:数据结构重难点及复习建议

2018考研计算机:数据结构重难点及 复习建议 新东方在线推荐: 一、重难点解析和复习建议 数据结构的考查目标定位为掌握数据结构的基本概念、基本原理和基本方法,掌握数据的逻辑结构、存储结构以及基本操作的实现;能够对算法进行基本的时间复杂度和空间复杂度的分析;能够运用数据结构的基本原理和方法进行问题的分析求解,具备采用C、C++或JAVA语言设计程序与实现算法的能力。 当然,考生也不必因此而专门复习一遍C或C++程序设计,毕竟复习时间有限,而且数据结构要求的重点在于算法设计的能力,而不是编写代码的能力,因此,只要能用类似伪代码的形式把思路表达清楚就行,不用强求写出一个没有任何语法错误的程序。 下面我们来解析一下知识点: 线性表这一章里面的知识点不多,但要做到深刻理解,能够应用相关知识点解决实际问题。链表上插入、删除节点时的指针操作是选择题的一个常考点,诸如双向链表等一些相对复杂的链表上的操作也是可以出现在综合应用题当中的。 栈、队列和数组可以考查的知识点相比链表来说要多一些。最基本的,是栈与队列FILO和FIFO的特点。比如针对栈FILO的特点,进栈出栈序列的问题常出现在选择题中。其次,是栈和队列的顺序和链式存储结构,这里一个常考点是不同存储结构下栈顶指针、队首指针以及队尾指针的操作,特别是循环队列判满和判空的2种判断方法。再次,是特殊矩阵的压缩存储,这个考点复习的重点可以放在二维矩阵与一维数组相互转换时,下标的计算方法,比如与对角线平行的若干行上数据非零的矩阵存放在一维数组后,各个数据点相应的下标的计算。这一章可能的大题点,在于利用堆栈或队列的特性,将它们作为基础的数据结构,支持实际问题求解算法的设计,例如用栈解决递归问题,用队列解决图的遍历问题等等。 树和二叉树:这一章中我们从顺序式的数据结构,转向层次式的数据结构,要掌握树、二叉树的各种性质、树和二叉树的不同存储结构、森林、树和二叉树之间的转换、线索化二叉树、二叉树的应用(二叉排序树、平衡二叉树和Huffman树),重点要熟练掌握的,是森林、树以及二叉树的前中后三种遍历方式,要能进行相应的算法设计。这一部分是数据结构考题历来的重点和难点,复习时要特别关注。一些常见的选择题考点包括:满二叉树、完全二叉树节点数的计算,由树、二叉树的示意图给出相应的遍历序列,依据二叉树的遍历序列还原二叉树,线索化的实质,计算采用不同的方法线索化后二叉树剩余空指针域的个数,平衡二叉树的定义、性质、建立和四种调整算法以及回溯法相关的问题。常见的综合应用题考点包括:二叉树的遍历算法,遍历基础上针对二

钢结构工程焊接技术重点、难点及控制措施_secret

钢结构工程焊接技术重点、难点及控制措施本文针对钢结构工程焊接技术的重点和难点,按多年来的工程实践经验主要阐述十种实用焊接变形的控制措施和方法;焊接残余应力的控制措施;焊接裂纹的防治措施;焊接工艺评定的范围;焊缝质量检查;框架结构制作与安装焊接;安装焊接工艺;钢结构变形的预防等。 1、概述 钢结构焊接时,焊接热源对结构不均匀加热引起的结构形状和尺寸的变化,称为焊接变形。在变形的同时,结构内部还产生应力、应变,因为这时结构并未承受外载时,就存在这些应力,所以这些应力居于内应力范畴,称为焊接残余力。属于不均匀分布的自平衡内应力。 焊接变形及应力在焊接过程中往往是难以避免的。它们将影响到焊接结构尺寸精度和焊接接头的强度,轻者需耗费不少人力、物力去矫正、修理,严重的会使构件报废。此外,焊接变形和应力对焊接结构以后使用是的承载能力也产生不可低估的影响。焊接残余应力和焊接变形是能量存在同一构件的不同形式,服从于能量存在同一构件的不同形式,服从于能量守恒定律;它们相辅相成,并互相转化。减少一方必须增大一方: 设:焊缝的总能量为E总,E总=E有+E损+ρ残+ε=1 (1) (1)式中,E有—冶金反应时的有用能;E损---无用能,损耗能;ρ残--焊接残余应力;ε-焊接变形,当焊接完成后,构件中只存在两种能量形式; E残+ε=c<1 (2) c---常量 于是(2)式有了工程应用的价值,这就是我们在工程实际中控制焊接残余应力和焊接变形的基本观点。我们从事钢结构设计、制作安装的技术人员必须了解和掌握焊接变形及应力产生的原因及其基本规律、影响因素,以便在制作安装过程中能够控制焊接变形和应力。 2、焊接应变与变形的控制 2.1焊接变形的控制 (1)尽量减少焊缝的截面积,施焊量以满足连接需要即可,俗话说:“不过焊”,(对一般的角焊缝)是按照有效焊角尺寸来决定其焊缝强度的,所以对于凸出很高的焊缝,多出的焊缝金属,按规范作用并不能提高其许可强度,反而增大了应力集中系数,消弱了坡口的综合性能。对厚板,对接焊缝,可采用U型刨边形成U型坡口,可进一步减少焊缝金属量。 (2)焊缝的数量愈少愈好,每条焊缝尽量采用多层多道焊,厚板焊接特别要注意。 (3)焊缝尽可能称、布置要靠近中和轴施焊(由于收缩力引起钢板变形力臂小),因此减少变形。 (4)环绕中和轴的焊缝要平衡:应用对称施焊的原则,时一个收缩力对另一个收缩力相互平

数据结构学习总结

数据结构学习总结 经过一学期的学习,我对数据结构有了我自己的认识。一开始,我以为它和C语言和C++一样,都是讲一门语言。但学习之后,发现事实并不是这样,在数据结构的学习中,有线性表,有队,有栈,有树,有图等等。这些看起来没有关系,其实之间有着千丝万缕的联系。线性表是其中最简单的,所以在前几章学习,后面依次逐章变难,学起来也很吃力。 《数据结构与算法》以基本数据结构和算法设计策略为知识单元,系统地介绍了数据结构的知识与应用、计算机算法的设计与分析方法,主要内容包括线性表、树、图和广义表、算法设计策略以及查找与排序算法等。 线性表是最基本、最简单、也是最常用的一种数据结构。线性表中数据元素之间的关系是一对一的关系,即除了第一个和最后一个数据元素之外,其它数据元素都是首尾相接的。线性表的逻辑结构简单,便于实现和操作。因此,线性表这种数据结构在实际应用中是广泛采用的一种数据结构。线性表具有如下的结构特点:均匀性:虽然不同数据表的数据元素可以是各种各样的,但对于同一线性表的各数据元素必定具有相同的数据类型和长度。有序性:各数据元素在线性表中的位置只取决于它们的序号,数据元素之前的相对位置是线性的,即存在唯一的“第一个“和“最后一个”的数据元素,除了第一个和最后一个外,其它元素前面均只有一个数据元素直接前驱和后面均只有一个数据元素(直接后继)。在实现线性表数据元素的存储方面,一般可用顺序存储结构和链式存储结构两种方法。链式存储结构将在本网站线性链表中介绍,本章主要介绍用数组实现线性表数据元素的顺序存储及其应用。另外栈、队列和串也是线性表的特殊情况,又称为受限的线性结构。 链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生

数据结构重点难点

数据结构重点难点 1.数据结构重点内容: 什么是数据结构? 数据元素和数据项的基本概念。 4大类逻辑结构。 算法的时间复杂度。 线性结构的基本特征; 在线性表(n个元素)的第i个位置前插入一个元素核心语句; 链表插入的核心语句; 栈 ( Stack )的定义和特点; 栈的操作实现(1) 入栈(2)出栈; 会做入栈出栈的题;实现递归; 队列的定义和特性; 顺序循环队列的表示和实现; 链式队列的存储结构; 判断链队列是否空; 串的基本概念; 串长的求法; 空串和空白串的区别; 串相等的条件; 串联接操作; 串的表示和实现; 数组的两种顺序映象的方式:1)以行序为主序,2)以列序为主序; 稀疏矩阵的压缩存储; 广义表的定义; 广义表的长度定义; 广义表的深度定义;

非空广义表的表头、表尾; 二叉树的定义; 二叉树的特点; 二叉树的性质; 二叉树的第i层上至多有多少个结点; 深度为k的二叉树中至多含有2k-1个结点;二叉树的先(根)序遍历; 二叉树的中(根)序遍历; 二叉树的后(根)序遍历; 线索二叉树的生成——线索化; 森林与二叉树的转换; 树与二叉树的转换; 树的先根遍历和后根遍历; Huffman树定义; 构造Huffman树的步骤并会做题;Huffman树编码; 图的结构定义; 图的数组(邻接矩阵)存储表示并会做题;图的邻接表存储表示并会做题; 有向图的十字链表存储表示并会做题; 深度优先搜索遍历图; 广度优先搜索遍历图; 普里姆算法求最小生成树; 克鲁斯卡尔算法求最小生成树; 求每一对顶点之间的最短路径; 顺序表的查找; 有序表的折半查找; 有序表的折半查找适用条件; 二叉排序树的构建过程;

相关文档
相关文档 最新文档