① 什么是算法与数据结构
算法(Algorithm)是一系列解决问题的清晰指令,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。
算法可以理解为有基本运算及规定的运算顺序所构成的完整的解题步骤。或者看成按照要求设计好的有限的确切的计算序列,并且这样的步骤和序列可以解决一类问题。
一个算法应该具有以下五个重要的特征:
1、有穷性: 一个算法必须保证执行有限步之后结束;
2、确切性: 算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定除了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性: 算法原则上能够精确地运行,而且人们用笔和纸做有限次运算后即可完成。
计算机科学家尼克劳斯-沃思曾着过一本着名的书《数据结构十算法= 程序》,可见算法在计算机科学界与计算机应用界的地位。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
一般认为,一个数据结构是由数据元素依据某种逻辑联系组织起来的。对数据元素间逻辑关系的描述称为数据的逻辑结构;数据必须在计算机内存储,数据的存储结构是数据结构的实现形式,是其在计算机内的表示;此外讨论一个数据结构必须同时讨论在该类数据上执行的运算才有意义。
在许多类型的程序的设计中,数据结构的选择是一个基本的设计考虑因素。许多大型系统的构造经验表明,系统实现的困难程度和系统构造的质量都严重的依赖于是否选择了最优的数据结构。许多时候,确定了数据结构后,算法就容易得到了。有些时候事情也会反过来,我们根据特定算法来选择数据结构与之适应。不论哪种情况,选择合适的数据结构都是非常重要的。
选择了数据结构,算法也随之确定,是数据而不是算法是系统构造的关键因素。这种洞见导致了许多种软件设计方法和程序设计语言的出现,面向对象的程序设计语言就是其中之一。
在计算机科学中,数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象(数据元素)以及它们之间的关系和运算等的学科,而且确保经过这些运算后所得到的新结构仍然是原来的结构类型。
“数据结构”作为一门独立的课程在国外是从1968年才开始设立的。 1968年美国唐·欧·克努特教授开创了数据结构的最初体系,他所着的《计算机程序设计技巧》第一卷《基本算法》是第一本较系统地阐述数据的逻辑结构和存储结构及其操作的着作。“数据结构”在计算机科学中是一门综合性的专业基础课。数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。数据结构这一门课的内容不仅是一般程序设计(特别是非数值性程序设计)的基础,而且是设计和实现编译程序、操作系统、数据库系统及其他系统程序的重要基础。
计算机是一门研究用计算机进行信息表示和处理的科学。这里面涉及到两个问题:
信息的表示
信息的处理
而信息的表示和组又直接关系到处理信息的程序的效率。随着计算机的普及,信息量的增加,信息范围的拓宽,使许多系统程序和应用程序的规模很大,结构又相当复杂。因此,为了编写出一个“好”的程序,必须分析待处理的对象的特征及各对象之间存在的关系,这就是数据结构这门课所要研究的问题。众所周知,计算机的程序是对信息进行加工处理。在大多数情况下,这些信息并不是没有组织,信息(数据)之间往往具有重要的结构关系,这就是数据结构的内容。数据的结构,直接影响算法的选择和效率。
计算机解决一个具体问题时,大致需要经过下列几个步骤:首先要从具体问题中抽象出一个适当的数学模型,然后设计一个解此数学模型的算法(Algorithm),最后编出程序、进行测试、调整直至得到最终解答。寻求数学模型的实质是分析问题,从中提取操作的对象,并找出这些操作对象之间含有的关系,然后用数学的语言加以描述。计算机算法与数据的结构密切相关,算法无不依附于具体的数据结构,数据结构直接关系到算法的选择和效率。运算是由计算机来完成,这就要设计相应的插入、删除和修改的算法 。也就是说,数据结构还需要给出每种结构类型所定义的各种运算的算法。
数据是对客观事物的符号表示,在计算机科学中是指所有能输入到计算机中并由计算机程序处理的符号的总称。
数据元素是数据的基本单位,在计算机程序中通常作为一个整体考虑。一个数据元素由若干个数据项组成。数据项是数据的不可分割的最小单位。有两类数据元素:一类是不可分割的原子型数据元素,如:整数"5",字符 "N" 等;另一类是由多个款项构成的数据元素,其中每个款项被称为一个数据项。例如描述一个学生的信息的数据元素可由下列6个数据项组成。其中的出身日期又可以由三个数据项:"年"、"月"和"日"组成,则称"出身日期"为组合项,而其它不可分割的数据项为原子项。
关键字指的是能识别一个或多个数据元素的数据项。若能起唯一识别作用,则称之为 "主" 关键字,否则称之为 "次" 关键字。
数据对象是性质相同的数据元素的集合,是数据的一个子集。数据对象可以是有限的,也可以是无限的。
数据处理是指对数据进行查找、插入、删除、合并、排序、统计以及简单计算等的操作过程。在早期,计算机主要用于科学和工程计算,进入八十年代以后,计算机主要用于数据处理。据有关统计资料表明,现在计算机用于数据处理的时间比例达到80%以上,随着时间的推移和计算机应用的进一步普及,计算机用于数据处理的时间比例必将进一步增大。
数据结构是指同一数据元素类中各数据元素之间存在的关系。数据结构分别为逻辑结构、存储结构(物理结构)和数据的运算。数据的逻辑结构是对数据之间关系的描述,有时就把逻辑结构简称为数据结构。逻辑结构形式地定义为(K,R)(或(D,S)),其中,K是数据元素的有限集,R是K上的关系的有限集。
数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构(网状结构)。树形结构和图形结构全称为非线性结构。集合结构中的数据元素除了同属于一种类型外,别无其它关系。线性结构中元素之间存在一对一关系,树形结构中元素之间存在一对多关系,图形结构中元素之间存在多对多关系。在图形结构中每个结点的前驱结点数和后续结点数可以任意多个。
数据结构在计算机中的表示(映像)称为数据的物理(存储)结构。它包括数据元素的表示和关系的表示。数据元素之间的关系有两种不同的表示方法:顺序映象和非顺序映象,并由此得到两种不同的存储结构:顺序存储结构和链式存储结构。顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现,由此得到的存储表示称为顺序存储结构。顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。由此得到的存储表示称为链式存储结构,链式存储结构通常借助于程序设计语言中的指针类型来实现。索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。
数据结构中,逻辑上(逻辑结构:数据元素之间的逻辑关系)可以把数据结构分成线性结构和非线性结构。线性结构的顺序存储结构是一种随机存取的存储结构,线性表的链式存储结构是一种顺序存取的存储结构。线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。逻辑结构与数据元素本身的形式、内容、相对位置、所含结点个数都无关。
算法的设计取决于数据(逻辑)结构,而算法的实现依赖于采用的存储结构。数据的运算是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新的排序等。
② 数据结构哪些是四种常见的逻辑结构
四种常见的逻辑结构:
1、集合结构
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
2、线性结构
数据结构中的元素存在一对一的相互关系
3、树形结构
数据结构中的元素存在一对多的相互关系
4、图形结构
数据结构中的元素存在多对多的相互关系
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。
数据的物理结构是数据结构在计算机中的表示(又称映像),它包括数据元素的机内表示和关系的机内表示。由于具体实现的方法有顺序、链接、索引、散列等多种,所以,一种数据结构可表示成一种或多种存储结构。
③ 数据结构有哪几种
问题一:数据结构 都有哪些结构 常用数据结构
数组 (Array)
在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数据元素的 *** 称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指针数组、结构数组等各种类别。
栈 (Stack)
是只能在某一端插入和删除的特殊线性表。它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。
队列 (Queue)
一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。
链表 (Linked List)
是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。
树 (Tree)
是包含n(n>0)个结点的有穷 *** K,且在K中定义了一个关系N,N满足 以下条件:
(1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)。 (2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。
(3)K中各结点,对户系N来说可以有m个后继(m>=0)。
图 (Graph)
图是由结点的有穷 *** V和边的 *** E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
堆 (Heap)
在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。
散列表 (Hash)
若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。
问题二:常用的数据结构有哪几种 数据元素相互之间的关系称为结构。有四类基本结构: *** 、线性结构、树形结构、图状结构;
*** 结构:除了同属于一种类型外,别无其它关系
线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插
入,删除操作.
树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等)
图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意
问题三:数据结构包括哪几种基本结构,各有什么特点 1、评价一个算法时间性能的主要标准是(算法的时间复杂度)。
2、算法的时间复杂度与问题的规模有关外,还与输入实例的(初始状态)有关。
3、一般,将算法求解问题的输入量称为(问题的规模)。
4、在选择算法时,除首先考虑正确性外,还应考虑哪三点?
答:选用的算法首先应该是正确的。此外,主要考虑如下三点:① 执行算法所耗费的时间;② 执行算法所耗费的存储空间,其中主要考虑辅助存储空间;③ 算法应易于理解,易于编码,易于调试等等。
6、下列四种排序方法中,不稳定的方法是(D )
A、直接插入排序B、冒泡排序C、归并排序D、直接选择排序
7、按增长率由小至大的顺序排列下列各函数:
2100, (3/2)n,(2/3)n,nn ,n0.5 , n! ,2n ,lgn ,nlgn, n3/2
问题四:数据结构都有哪些分类呢? 根据数据元素间关系的不同特性,将数据结构常分为下列四类基本的结构:
⑴ *** 结构。该结构的数据元素间的关系是“属于同一个 *** ”。
⑵线性结构。该结构的数据元素之间存在着一对一的关系。
⑶树型结构。该结构的数据元素之间存在着一对多的关系。
⑷图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
问题五:数据结构哪三种 有三种类型:分别是概念数据模型、逻辑数据模型、物理数据模型。概念数据模型主要用来描述世界的概念化结构,它使数据库的设计人员在设计的初始阶段,摆脱计算机系统及DBMS的具体技术问题,集中精力分析数据以及数据之间的联系等;逻辑数据模型这是用户从数据库所看到的模型,是具体的DBMS所支持的数据模型,如网状数据模型、层次数据模型等;物理数据模型是面向计算机物理表示的模型,描述了数据在储存介质上的组织结构,它不但与具体的DBMS有关,而且还与操作系统和硬件有关。
问题六:数据结构有哪些基本算法 一、排序算法1、有简单排序(包括冒泡排序、插入排序、选择排序)2、快速排序,很常见的3、堆排序,4、归并排序,最稳定的,即没有太差的情况二、搜索算法最基础的有二分搜索算法,最常见的搜索算法,前提是序列已经有序还有深度优先和广度有限搜索;及使用剪枝,A*,hash表等方法对其进行优化。三、当然,对于基本数据结构,栈,队列,树。都有一些基本的操作例如,栈的pop,push,队列的取队头,如队;以及这些数据结构的具体实现,使用连续的存储空间(数组),还是使用链表,两种具体存储方法下操作方式的具体实现也不一样。还有树的操作,如先序遍历,中序遍历,后续遍历。当然,这些只是一些基本的针对数据结构的算法。而基本算法的思想应该有:1、回溯2、递归3、贪心4、动态规划5、分治有些数据结构教材没有涉及基础算法,lz可以另外找一些基础算法书看一下。有兴趣的可以上oj做题,呵呵。算法真的要学起来那是挺费劲。
问题七:数据结构哪些是四种常见的逻辑结构 ① *** *** 中任何两个数据元素之间都没有逻辑关系,组织形式松散.
② 线性结构 线性结构中的 结点按逻辑关系依次排列形成一个“锁链”.
③ 树形结构 树形结构具有分支、层次特性,其形态有点象自然界中的树.
④ 图状结构 图状结构中的结点按逻辑关系互相缠绕,任何两个结点都可以邻接
④ 图计算框架有哪些
图计算框架回顾 0 从数据并行到图并行 自从04 年 Google 公开了它的 MapRece 之后,大家就像是发现了什么新大陆一样以极大的热情投入到新型计算框
⑤ 数据结构——图
转自: http://www.cnblogs.com/mcgrady/archive/2013/09/23/3335847.html
阅读目录
一,图的定义
二,图相关的概念和术语
三,图的创建和遍历
四,最小生成树和最短路径
五,算法实现
这一篇我们要总结的是图(Graph),图可能比我们之前学习的线性结构和树形结构都要复杂,不过没有关系,我们一点一点地来总结,那么关于图我想从以下几点进行总结:
1,图的定义?
2,图相关的概念和术语?
3,图的创建和遍历?
4,最小生成树和最短路径?
5,算法实现?
一,图的定义
什么是图呢?
图是一种复杂的非线性结构。
在线性结构中,数据元素之间满足唯一的线性关系,每个数据元素(除第一个和最后一个外)只有一个直接前趋和一个直接后继;
在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(双亲节点)及下一层的多个元素(孩子节点)相关;
而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。
图G由两个集合V(顶点Vertex)和E(边Edge)组成,定义为G=(V,E)
二,图相关的概念和术语
1,无向图和有向图
对于一个图,若每条边都是没有方向的,则称该图为无向图。图示如下:
因此,(Vi,Vj)和(Vj,Vi)表示的是同一条边。注意,无向图是用小括号,而下面介绍的有向图是用尖括号。
无向图的顶点集和边集分别表示为:
V(G)={V1,V2,V3,V4,V5}
E(G)={(V1,V2),(V1,V4),(V2,V3),(V2,V5),(V3,V4),(V3,V5),(V4,V5)}
对于一个图G,若每条边都是有方向的,则称该图为有向图。图示如下。
因此,和是两条不同的有向边。注意,有向边又称为弧。
有向图的顶点集和边集分别表示为:
V(G)={V1,V2,V3}
E(G)={,,,}
2,无向完全图和有向完全图
我们将具有n(n-1)/2条边的无向图称为无向完全图。同理,将具有n(n-1)条边的有向图称为有向完全图。
3,顶点的度
对于无向图,顶点的度表示以该顶点作为一个端点的边的数目。比如,图(a)无向图中顶点V3的度D(V3)=3
对于有向图,顶点的度分为入度和出度。入度表示以该顶点为终点的入边数目,出度是以该顶点为起点的出边数目,该顶点的度等于其入度和出度之和。比如,顶点V1的入度ID(V1)=1,出度OD(V1)=2,所以D(V1)=ID(V1)+OD(V1)=1+2=3
记住,不管是无向图还是有向图,顶点数n,边数e和顶点的度数有如下关系:
因此,就拿有向图(b)来举例,由公式可以得到图G的边数e=(D(V1)+D(V2)+D(V3))/2=(3+2+3)/2=4
4,子图
故名思义,这个就不解释了。
5,路径,路径长度和回路
路径,比如在无向图G中,存在一个顶点序列Vp,Vi1,Vi2,Vi3…,Vim,Vq,使得(Vp,Vi1),(Vi1,Vi2),…,(Vim,Vq)均属于边集E(G),则称顶点Vp到Vq存在一条路径。
路径长度,是指一条路径上经过的边的数量。
回路,指一条路径的起点和终点为同一个顶点。
6,连通图(无向图)
连通图是指图G中任意两个顶点Vi和Vj都连通,则称为连通图。比如图(b)就是连通图。下面是一个非连通图的例子。
上图中,因为V5和V6是单独的,所以是非连通图。
7,强连通图(有向图)
强连通图是对于有向图而言的,与无向图的连通图类似。
8,网
带”权值”的连通图称为网。如图所示。
三,图的创建和遍历
1,图的两种存储结构
1) 邻接矩阵,原理就是用两个数组,一个数组保存顶点集,一个数组保存边集。下面的算法实现里边我们也是采用这种存储结构。如下图所示:
2) 邻接表,邻接表是图的一种链式存储结构。这种存储结构类似于树的孩子链表。对于图G中每个顶点Vi,把所有邻接于Vi的顶点Vj链成一个单链表,这个单链表称为顶点Vi的邻接表。
2,图的两种遍历方法
1) 深度优先搜索遍历
深度优先搜索DFS遍历类似于树的前序遍历。其基本思路是:
a) 假设初始状态是图中所有顶点都未曾访问过,则可从图G中任意一顶点v为初始出发点,首先访问出发点v,并将其标记为已访问过。
b) 然后依次从v出发搜索v的每个邻接点w,若w未曾访问过,则以w作为新的出发点出发,继续进行深度优先遍历,直到图中所有和v有路径相通的顶点都被访问到。
c) 若此时图中仍有顶点未被访问,则另选一个未曾访问的顶点作为起点,重复上述步骤,直到图中所有顶点都被访问到为止。
图示如下:
注:红色数字代表遍历的先后顺序,所以图(e)无向图的深度优先遍历的顶点访问序列为:V0,V1,V2,V5,V4,V6,V3,V7,V8
如果采用邻接矩阵存储,则时间复杂度为O(n2);当采用邻接表时时间复杂度为O(n+e)。
2) 广度优先搜索遍历
广度优先搜索遍历BFS类似于树的按层次遍历。其基本思路是:
a) 首先访问出发点Vi
b) 接着依次访问Vi的所有未被访问过的邻接点Vi1,Vi2,Vi3,…,Vit并均标记为已访问过。
c) 然后再按照Vi1,Vi2,… ,Vit的次序,访问每一个顶点的所有未曾访问过的顶点并均标记为已访问过,依此类推,直到图中所有和初始出发点Vi有路径相通的顶点都被访问过为止。
图示如下:
因此,图(f)采用广义优先搜索遍历以V0为出发点的顶点序列为:V0,V1,V3,V4,V2,V6,V8,V5,V7
如果采用邻接矩阵存储,则时间复杂度为O(n2),若采用邻接表,则时间复杂度为O(n+e)。
四,最小生成树和最短路径
1,最小生成树
什么是最小生成树呢?在弄清什么是最小生成树之前,我们需要弄清什么是生成树?
用一句语简单概括生成树就是:生成树是将图中所有顶点以最少的边连通的子图。
比如图(g)可以同时得到两个生成树图(h)和图(i)
知道了什么是生成树之后,我们就很容易理解什么是最小生成树了。所谓最小生成树,用一句话总结就是:权值和最小的生成树就是最小生成树。
比如上图中的两个生成树,生成树1和生成树2,生成树1的权值和为:12,生成树2的权值为:14,我们可以证明图(h)生成树1就是图(g)的最小生成树。
那么如何构造最小生成树呢?可以使用普里姆算法。
2,最短路径
求最短路径也就是求最短路径长度。下面是一个带权值的有向图,表格中分别列出了顶点V1其它各顶点的最短路径长度。
表:顶点V1到其它各顶点的最短路径表
从图中可以看出,顶点V1到V4的路径有3条(V1,V2,V4),(V1,V4),(V1,V3,V2,V4),其路径长度分别为15,20和10,因此,V1到V4的最短路径为(V1,V3,V2,V4)。
那么如何求带权有向图的最短路径长度呢?可以使用迪杰斯特拉(Dijkstra)算法。
⑥ 根据建筑图进行结构计算的步骤是什么
一, 分析建筑条件,准备初步工作:
1. 底框部分:
(1) 根据建筑条件图布置框架柱轴网,由抗震概念设计,尽量不要出现单根柱而不能形 成一榀框架的情况,柱距一般为 6 米;
(2) 柱截面初步设计;单层商铺部分的框架柱截面设为 350X350,底框部分的框架柱设 为 400X400;
(3) 根据柱轴网确定剪力墙的分布(长度和距离) ;
(4) 剪力墙一般分布在楼梯间处,与电信专业协调,预留电表箱位置;
(5) 剪力墙往往矮而长,变形能力差,多为剪切破坏,宜开竖缝保证高宽比大于 1.5;
(6) 根据底层店面部分的墙厚确定框架梁,柱偏心;
(7) 根据框架柱的设置和柱距,确定框架梁的高度和宽度(一般上面有出承重墙的框架 梁宽度不小于 350,其它墙梁宽度不小于 300,高度不小于净跨的 1/5)(框架结构梁截面 ; 尺寸控制办法: 计算时用 TAT, 看计算结果配筋图内的配筋率图; 要求全截面配筋率 1.5-1.7 之间)
(8) 其框架和抗震墙的抗震等级,6,7 度可分别按三,二级采用;
2. 砖混部分:
(1) 根据纵横墙的布置及可能会有的屋面构架,确定构造柱的位置和种类, (最外围的构 造柱直接升到女儿墙,门窗洞口处的构造柱尺寸最好与门洞处的短墙吻合)
(2) 根据户型布置设置梁,包括其宽度和高度(其位置应把楼板分成规则的矩形,在阳 台较大窗洞处或门窗连续设置处应设置过梁,且其高度加上门窗的高度应等于楼层高度) ;
(3) 根据户型布置确定板厚,一般取短向跨度的 1/35,但是最好不要小于 100,客厅不 小于 120,否则影响使用;阳台,厨卫一般为 90,屋面板厚 120,楼梯梯板厚度为板跨的 1/28,且平台梁高度与其下的窗高之和要等于建筑标高;
(4) 根据墙体外立面的腰线做法,确定外围圈梁的高度和做法;
(5) 根据总体要求,设置不同的结构标准层与荷载标准层;
(6) 阳台处的挑梁高度为挑出长度的 1/3-1/6;
二, 输入计算模型,进行程序计算:
1. 底框部分:
(1) SAT-8 计算底框时不能考虑风荷载.若在"底框结构空间分析方法"中选取"有限元整 体算法"可计算风荷载,但结果偏小建议不使用;
(2) 上部承受墙荷载的墙梁宽度不于 300;
(3) 过渡层如果开洞大于 800,需要设边梁;
(4) 抗震墙厚度不小于净高的 1/20, 且宜开设洞口形成若干墙段, 其高宽比不宜小于 2;
(5) 注意:梁和柱的偏心,应根据建筑要求与砌体外墙平齐,且上部的砌体抗震墙与底 部的框架梁或抗震墙应对齐或基本对齐;
(6) 注意:剪力墙材料为混凝土及其强度等级;
(7) 材料等级:整个工程钢筋等级应统一为 II 级或 III 级,楼板,梁为 C30 混凝土,柱 为 C25 混凝土,剪力墙为 C30 混凝土;
(8) 在 SATWE 中进入底框模型后选取荷载时, 选取上部砖混荷载的标准组合来计算配筋, 这样可以不用单独建立砖混的计算模型
(9) 在模型中,应输入底层的砖墙,并计算出二层砖混结构与底框结构的抗侧刚度之比, 为保证房屋的整体抗震性能较好,最好在 1.3-1.8 之间(1.5 左右) ,以此确定剪力墙的是否 开洞和增减长度; (10) 通过 JCCAD 得出综合模型中的柱底内力设计值简图,用柱底内力除以单桩竖向承 载力特征值,确定框架柱下应该设置的桩数,并由此确定承台类型(单桩,两桩等) ;
(11) 对于小墙垛的强度和梁端支承处砌体的局压的计算应予以重视;
(12) 一般不考虑墙梁荷载折减,否则应在设计说明中提出对施工及使用的要求;
(13) SAT-8 计算底框时不能进行柱双偏压验算.但是当纵横向尺寸接近及角柱可根据经 验调整柱配筋,或用高层版 TAT 进行双偏压验算;
(14) 当平面布置较规则时(无柱列错位情况)SAT-8 计算结果与采用 PK 计算无显着差 别.
2. 砖混部分:
(1) 门窗洞口的输入必须尽量准确,门上方设置过梁,上方有梁的门窗洞口,其墙可不 用输入,墙上不应设转角窗;
(2) 构造柱先不输入,待进行初次计算后得出哪些地方需要加构造柱(打出计算书) ,再 加入所需构造柱,直到满足抗震计算要求;
(3) 该部分的梁用 SATWE 中的"有限元整体算法"计算;门洞过梁的配筋应以列表的形式 表示;
(4) 建筑材料:一层为 MU10 烧结粘土砖,M7.5 混合砂浆(室外地坪以下为 M7.5 水泥 砂浆) ,二层以上为 MU10 烧结粘土砖,M5.0 混合砂浆(底框结构时,二层改为 M7.5 混合 砂浆) 一层以上板柱与梁, , 圈梁和屋顶构架可以用 C20 混凝土; 轻质隔墙一般采用 3KN/m2 的加气混凝土砌块;
(5) 修改部分楼板的板厚和部分构件的材料,以符合要求;
(6) 计算基础时,板的活荷载可以折减,计算梁,板时,不折减;坡屋面的面荷载要用 水平投影的值; (7) 阁楼层的高度=起坡处的高度+成坡部分高度的一半;
(8) 准确把握总体信息,分清自然层与结构,荷载标准层的对应关系,进行总体装配;
(9) 阳台如果有分户隔墙,最好不要按照承重的砖混结构考虑,应考虑层层设置挑梁, 上面输入墙荷载.
三, 根据电算结果,绘制施工图:
1. 基础部分: (如果纯砖混建筑采用桩基础,那么计算时仍应按照底框模型来计算,但程序 中的中梁刚度放大系数不应取 2,应该取 1,总体信息中的底框层数注意修改为2).
(一)承台:
(1) 根据柱底内力设计值简图确定柱与墙下所需桩数, 一般有单桩 (配筋按照构造要求) , 两桩,三桩,四桩,五桩等,需要通过计算配筋;
(2) 柱下所需桩数及桩之间的间距(一般为 4d) ,确定承台尺寸: a.承台厚度不小于 300;且应比基础梁高度大 200 为宜; b.承台宽度不应小于 500,边桩中心至承台边缘的距离不宜小于桩的直径或边长,且桩的外 边缘至承台边的距离不小于 150;
(3) 承台配筋,对于矩形承台应按双向均匀通长配置,直径不宜小于 Ф10,间距不宜大 于 200,三桩承台,钢筋应按三向板带均匀布置,且最里面的三根钢筋围成的三角形应在柱 截面范围内;单柱单桩的承台按构造配筋,根据重庆市规范,应设置 Ф12@100 的封闭箍;
(4) 承台主筋除满足计算要求外,还应符合最小配筋率要求,主筋直径不宜小于 Ф12, 箍筋不宜小于 Ф8;
(5) 承台受弯计算中, 在得出 X, 方向柱边的弯矩后, Y 除以 0.9*fy*Ho,可得出配筋面积; (6) 当承台混凝土强度等级低于柱或桩的混凝土强度等级时,尚应验算柱下或桩上承台 的局部受压承载力;
(二)基础梁:
(1) 由承台和剪力墙的分布情况布置基础联系梁,单桩承台宜在互相垂直的方向上设置, 两桩承台宜在其短向设置;
(2) 宽度不应小于 250,且应根据上部的承重情况加宽(当承受剪力墙时,应每边多出 剪力墙 50,当承受设缝时,宽度应宽出每片墙外边各 50) ,高度可取承台中心距的 1/10~1/15;
(3) 基础梁设计,荷载取基础基本组合,配筋计算可以用 JCCAD 中的计算结果,也可以 以桩为支点按照连续梁模型用设计值进行计算 (可简化为简支)上下纵筋直径不小于 2Ф12, , 并应按受拉要求锚入梁内;
(4) 桩顶进入基础梁内长度为 50,桩的主筋锚入到基础梁长度不小于 30d;
(5) 梁顶面宜与承台位于同一标高;梁顶面一般比一层室内地面低 50cm;
(6) 要注意突出部分(如楼梯入口处的门楼,立面上的构架等)下面也要设置基础梁, 有的需要打桩;
(7) 基础拉梁高度取跨长的 1/20,然后取柱子竖向力的 1/10 作为地梁的轴力,以计算地 梁的纵筋; 2. 底框部分:
(一) 梁:
(1) 对生成的框架梁(墙托梁)配筋结果,需要根据这部分内容在规范中的要求进行调 整; (需对照规范逐条校对) ;
(2) 依据配筋验算图自行配筋.不管是否按墙梁计算,必须满足托墙梁的构造要求.对 非托墙梁可放松腰筋配置.因墙梁为拉杆受力,面筋拉通不宜小于 2Ф18;梁上,下筋放大 系数 1.05
(3) 住宅部分的框架梁按照墙梁处理,编号均为 KZL-X,箍筋间距均为 100;
(4)宽度大于 350 的梁,均采用 4 肢箍,且上下纵筋至少 4 根贯通;
(5)由于卫生间降板 400,且板厚 120,故其周围的梁截面应取到 550; (6)对于高度 h 大于 500 的框架梁,应设置不少于 2Ф14 的腰筋,间距不应大于 200,且 根据框架梁计算结果确定并标出是构造需要(G) (构造要求腰筋总面积不应小于腹板截面 面积 bhw 的 0.2%)还是抗扭计算需要(N) ;如计算需配受扭筋则扭筋间距≤200:梁高 400-450 不少于 2 根(双边) 梁高 500-650 不少于 4 根(双边) 梁高 700-850 不少于 6 ; ; 根(双边) 梁高 900-1050 不少于 8 根(双边) ;
(6) 框架梁跨中截面纵向受力钢筋总配筋率不应小于 0.6%;
(7) 框架梁每跨底部的纵向受力钢筋应通长配置;
(8) 单独表示的梁要有标高,一般是建筑标高-0.030=结构标高;
(9) 主次梁交接处,梁有集中力处应附加箍筋和吊筋,优先采用附加箍筋;
(10)加大过渡层及屋面圈梁配筋;
(11)截面往往由箍筋配置情况控制.查看配筋验算简图时,注意箍筋面积不超过 2.2 (D12@100) ;若纵筋面积较大,实际配筋率可能超过 2%时,宜增大梁截面重新计算,将 箍筋直径控制在 12 以内; (12)应加强支座处的配筋,特别是框架梁为墙梁支座时; (13)如梁太密集,可以分画为横向梁和纵向梁两张图,
(二) 柱:
(1) 最好按照计算书中的数值自行配筋,以免自动生成时出现一些错误;
(2) 框架柱和剪力墙要根据轴压比的大小进行多次调试,如果轴压比小于 0.5,就应减小 截面,或者沿纵横两个方向截面高度不同,以求使截面优化,应尽量接近规范要求的 0.9, 且截面尺寸尽量接近;
(3) 框架柱箍筋不小于 Ф8,且应在支座处加密;
(4) 框架柱受力钢筋不小于 3 根 HRB400 的 18;
(5) 楼梯间处的柱子要注意偏位,以满足净空要求;
(三)墙:
(1) 对于剪力墙,要求其抗侧向刚度与上部二层的抗侧向刚度之比符合规范要求;
(2) 抗震墙周边设置梁(暗梁)和边框柱(暗柱) ,梁宽度不宜小于墙厚的 1.5 倍,截面 高度不小于墙厚的 2.5 倍,边框柱的截面高度不宜小于墙厚的 2 倍;
(3) 抗震墙的竖向和横向分布钢筋配筋率不应小于 0.25%,并采用双排布置,拉筋间距 不应大于 600,直径不小于 Ф8;
(4) 抗震墙的边缘构件包括暗柱(沿全高加密箍筋) ,暗梁,设置在墙的边框位置和开洞 周围,具体配筋见规范;
(5) 尽量加强过渡层的构造措施,如能接受,可采取措施加大过渡层纵墙来抵抗平面外 弯矩的能力; (四)板: (1) 应采用双层双向通长配筋,且每方向配筋率不应低于 0.25%; (2) 长宽比满足:6,7 度时不宜超过 4,8 度时不宜超过 3,9 度时不宜超过 2.5,否则 须验算楼板平面内的抗弯承载力及其变形对整个结构的影响; (3) 不宜开设大洞口,楼梯,电梯间的周围应设置抗震墙围成的筒体,且必须严格按照 抗震墙的设计及施工要求进行设计及施工;
(4) 其外侧边缘应设置边缘拉梁予以加强,拉梁可利用纵向框架梁或底部外纵墙,拉梁 负筋至少应有 50%且不低于 0.25%配筋率的钢筋贯通梁全长.
3. 砖混部分:
(1) 关于构造柱:
1) 编号要清楚,凡有涉及该编号构造柱的图纸中必须要画其配筋大样,且标明起始标高;
2) 构造柱纵筋不小于 4Ф14,箍筋间距不大于 200;八度超过五层采用 4Ф14, 即纵筋加 大一级;还应根据《建筑抗震设计规范》P76 的要求,对角柱,边柱从严要求;
3) 应符合《建筑抗震设计规范》的要求,较大洞口(内纵墙,横墙>=2m,外纵墙 >=2.4m)两侧应设构造柱;特别要注意:《建筑抗震设计规范》第 7.3.2.5 条)房屋高 ( 度和层数接近限值时,纵,横墙内构造柱尚应符合下列要求: a.横墙内的构造柱间距不宜大于层高的二倍;下部 1/3 楼层的构造柱间距适当减小; b.当外纵墙开间大于 3.9m 时,应另设加强措施.内纵墙的构造柱间距不宜大于 4.2m. (规 范的 7.3.2.5 的"接近"是指达到《抗规》第 7.1.2 条表中限制的层数或差一层. )
(2) 根据各层板配筋简图人工配筋或调整自动生成的钢筋(面积,规格,间距等) ,板厚 与标高不同的板,板底钢筋和上部负筋必须断开;
(3) 当有 I,II 级钢筋混用时,应注意:板的钢筋面积按照 I 级钢筋计算;
(4) 板上下的钢筋间距宜相等,或互为倍数,直径级差均取一级,楼板的最小配筋率 (ρmin=As/h)应按照规范取用;
(5) 负筋不宜过细,一面被踩塌,较大直径的钢筋不宜过疏,否则易开裂;
(6) 阳台部分需要清楚表示截面大样,其下面的拖梁和边梁需要根据计算结果配筋,其 大样要注意与总体图协调(如墙体和构造柱的有无等) ; (7) 屋顶构架的梁,板配筋均可按构造配置,支撑构架的柱子从屋顶起,注意其与下部 构造柱的衔接问题; (8) 屋面属于温度,收缩应力较大的区域,配筋间距宜取 150~200,在板的未配筋表面 布置温度钢筋,其上,下表面沿纵,横两个方向的配筋率均不宜小于 0.1%,常采用拉通一 半配筋面积,不足另加的配筋方法; (9) 跨度小于 2 米的板钢筋只需说明双层双向可用双层双向 Ф8@200,坡屋顶由于梁数 量较多,故均为小面积板,可用双层双向 Ф8@150; (10) 一些细部尺寸在"楼板模板配筋图"中已经表示的,在"梁平面整体配筋图"中可不再 表示; (11) 板中的各种负筋,由于板的计算跨度唯一,故负筋伸入板内的长度应相等,且应准 确标出负筋端部到墙边或梁边的距离; (12) 现浇挑板阳角加辐射状附加筋; (13) 配筋计算时,可考虑塑性内力重分布,将板上筋乘以 0.8~0.9 的系数,板下筋乘以 1.1~1.2 的系数.但是,按弹性计算的双向板钢筋是板某几处的最大值,不必再人为放大, 支承在外墙上的负筋不宜过大(一般板厚≥150 时,采用 10@200,否则用 8@200;非矩形 板宜减少支座配筋, 增大跨中配筋; 轻质隔墙下只有在垂直单向板长边且不可能移位的位置, 下面才加粗钢筋以形成暗梁; (14) 楼板计算时,砖混结构房间外墙(包括楼梯间墙)不应按固接计算,楼板边支座应 按铰接计算; (15) 雨蓬和阳台的竖板现浇时,最小厚度应为 80,否则难以施工;竖筋应放在板中部, 当做双排筋时,高度若小于 900,则最小板厚为 100,否则为 120; (16) 挑板钢筋应留有余地,并应采用大直径钢筋,防止踩弯,应将挑板支座的负筋伸过 全跨; (17) 应注明施工质量控制等级; (18) 多层砌体结构在抗震设防地区,楼板面有高差时,其高差不应超过一个梁高(当错 层楼盖高差不大于 1/4 层高且不大于 700mm) 超过时, ; 应将错层当两个楼层计入房屋的总 层数中. 当错层楼盖高差不大于 1/4 层高且不大于 700mm,错层交界的墙体,除两侧楼盖 处圈梁照常设置外,还应沿墙长每隔不大于 2m 增设一根墙中构造柱; (19) 关于挑梁:
1) 阳台挑梁有时与墙中的烟道矛盾;
2) 顶层挑梁有时为两层板荷载,不能选用标准层的挑梁;
3) 挑梁外露与墙内部分标高不同时应注意梁在折角处的宽度及钢筋锚固;
4) 严格控制挑梁埋入砌体的长度:即挑梁埋入砌体长度 l1 与挑出长度 l 之比宜大于 1.2, 当挑梁上无砌体时,l1/l 之比宜大于 2; (20)圈梁兼过梁时,过梁部分的钢筋应按计算另行增配;(第 7.1.5.4 条) (21) 砌体结构的大梁,应根据《砌体结构设计规范》第 6.2.5 条设计.即:当梁跨度大 于或等于下列数值时,其支承处宜加设壁柱,或采用其他加强措施: a.对 240mm 厚的砖墙为 6m,对 180mm 厚的砖墙为 4.8m; b.对砌块,料石墙为 4.8m; (22) 凸窗台板抗倾覆要计算足够; (23) 坡地上多层砌体房屋的层数和总高度计算的要求:高度,层数应从低处算起; (24) 跃层住宅六层上跃层的楼梯,一般放在客厅的楼板上,而一般情况下其下又不允许 加梁,可以在楼梯下加暗梁(板)的方法解决.即: a.如果楼梯与厅的现浇板短向平行, 可以认为现浇板的一部分也是楼梯的一部分, 钢筋叠加. 但要注意叠加后的钢筋间距不要过小. b.如果楼梯与厅现浇板长向平行,则于板短向在楼梯下加暗梁或板下附加筋.暗梁宽度或板 下附加筋放置宽度为局部荷载下的有效分布宽度(荷载规范附录二). (25) 纵墙抗震验算不过时,可将内纵墙改为 140 厚的钢筋混凝土墙,造价虽略增高,但 可在建筑面积不变的情况下增加使用面积; (26) 楼梯间墙体水平支撑较弱,顶层墙体较高,在 8,9 度时,顶层楼梯间横墙和外墙 宜沿墙高设 2φ8@500 的通长筋,9 度时,休息平台处宜增设一钢筋带; (27) 独立梁的受力钢筋均不得小于 Ф14,Ф12 一般用于构造筋及架立
⑦ 常用数据结构有哪些
数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。
1、数组
数组是可以再内存中连续存储多个元素的结构,在内存中的分配也是连续的,数组中的元素通过数组下标进行访问,数组下标从0开始。例如下面这段代码就是将数组的第一个元素赋值为 1。
2、栈
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。 栈的特点是:先进后出,或者说是后进先出,从栈顶放入元素的操作叫入栈,取出元素叫出栈。
3、队列
队列与栈一样,也是一种线性表,不同的是,队列可以在一端添加元素,在另一端取出元素,也就是:先进先出。从一端放入元素的操作称为入队,取出元素为出队。
4、链表
链表是物理存储单元上非连续的、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个结点,一个是存储元素的数据域 (内存空间),另一个是指向下一个结点地址的指针域。根据指针的指向,链表能形成不同的结构,例如单链表,双向链表,循环链表等。
5、树
树是一种数据结构,它是由n(n>=1)个有限节点组成一个具有层次关系的集合。把它叫做 “树” 是因为它看起来像一棵倒挂的树,也就是说它是根朝上,而叶朝下的。
6、散列表
散列表,也叫哈希表,是根据关键码和值 (key和value) 直接进行访问的数据结构,通过key和value来映射到集合中的一个位置,这样就可以很快找到集合中的对应元素。
7、堆
堆是一种比较特殊的数据结构,可以被看做一棵树的数组对象,具有以下的性质:堆中某个节点的值总是不大于或不小于其父节点的值;堆总是一棵完全二叉树。将根节点最大的堆叫做最大堆或大根堆,根节点最小的堆叫做最小堆或小根堆。常见的堆有二叉堆、斐波那契堆等。
8、图
图是由结点的有穷集合V和边的集合E组成。其中,为了与树形结构加以区别,在图结构中常常将结点称为顶点,边是顶点的有序偶对,若两个顶点之间存在一条边,就表示这两个顶点具有相邻关系。
⑧ 数据结构中评价一个好的算法,应该从哪几个方面来考虑
数据结构中评价一个好的算法,应该从四个个方面来考虑,分别是:
一、算法的正确性。
二、算法的易读性。
三、是算法的健壮性。
四、是算法的时空效率(运行)。
算法的设计取决于数据(逻辑)结构,而算法的实现依赖于采用的存储结构。数据的存储结构实质上是它的逻辑结构在计算机存储器中的实现,为了全面的反映一个数据的逻辑结构,它在存储器中的映象包括两方面内容,即数据元素之间的信息和数据元素之间的关系。
不同数据结构有其相应的若干运算。数据的运算是在数据的逻辑结构上定义的操作算法,如检索、插入、删除、更新和排序等。
(8)图形结构算法扩展阅读:
分类
1、集合结构。该结构的数据元素间的关系是“属于同一个集合”。
2、线性结构。该结构的数据元素之间存在着一对一的关系。
3、树型结构。该结构的数据元素之间存在着一对多的关系。
4、图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。
⑨ 数据结构有什么
常用数据结构有哪些
数据元素相互之间的关系称为结构。有四类基本结构: *** 、线性结构、树形结构、图状结构;
*** 结构:除了同属于一种类型外,别无其它关系
线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在操作上有所区别.例如:链表可在任意位置插入或删除元素,而队列在队尾插入元素,队头删除元素,栈只能在栈顶进行插
入,删除操作.
树形结构:元素之间存在一对多关系,常见类型有:树(有许多特例:二叉树、平衡二叉树、查找树等)
图形结构:元素之间存在多对多关系,图形结构中每个结点的前驱结点数和后续结点多个数可以任意
算法和数据结构有什么区别??
数据结构是算法实现的基础,算法总是要依赖于某种数据结构来实现的。往往是在发展一种算法的时候,构建了适合鼎这种算法的数据结构。一种数据结构如果脱离了算法,那还有什么用呢?实际上也不存在一本书单纯的讲数据结构,或者单纯的讲算法。当然两者也是有一定区别的,算法更加的抽象一些,侧重于对问题的建模,而数据结构则是具体实现方面的问题了,两者是相辅相成的。
什么是数据结构,数据之间的关系有几种
数据结构是一门研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作等等的学科。
——《数据结构》(C语言版),严蔚敏,清华大学出版社。
数据之间的结构有线性的数据结构(计算机处理的对象之间如果存在着一种最简单的线性关系,则这类数学模型可称为线性的数据结构)和表、树和图之类的数据结构(描述非数值问题的数学模型时不能用数学方程)。
数据结构中*和&的区别是什么
应该是C++里的吧?没有在C语言版的数据结构中看见&吧?
在定义时,* 是一个标识符,声明该变量是一个指针,比如说int *p; 那p就是一个指向int型的指针;
在调用时,*p是指指针p指向的那个变量,比如说之前有int a=5;int *p=a;那么p的值是a的地址,也就是指针p指向a,*p则等于a的值,即*p=5。
而&,则是引用,比如说有定义int a=5;再定义int b=&a;那么这里的b则引用a的值,即b=5
,而再给b赋值:b=10,a的值也会变为10。
我想楼主会问*和&的区别,应该是针对函数定义里的参数而言吧,因为这里的这两者比较相似:
举几个简单例子:
先定义有int x=0;和int *p=x;
1、若定义函数: void fun_1(int a){ a=5;} , 则调用:fun_1(x); 之后,x还等于0;因为fun_1函数只改变了形参a的值,a只是fun_1函数里的局部变量,调用fun_1(x)相当于是“a=x;a=5;”,x没变;
2、若定义函数:void fun_2(int &a){ a=5;} , 则调用:fun_2(x); 之后,x等于5;因为这里的a引用了x的值;
3、若定义函数:void fun_3(int *a){ *a=5;} , 则调用:fun_3(p); 之后,x也等于5;因为fun_3函数的参数a是一个指针,相当于a=p;*a则与*p指向同一地址,改变*a即改变*p即x
数据结构都有哪些分类呢?
根据数据元素间关系的不同特性,将数据结构常分为下列四类基本的结构:
⑴ *** 结构。该结构的数据元素间的关系是“属于同一个 *** ”。
⑵线性结构。该结构的数据元素之间存在着一对一的关系。
⑶树型结构。该结构的数据元素之间存在着一对多的关系。
⑷图形结构。该结构的数据元素之间存在着多对多的关系,也称网状结构。
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。
数据结构是什么?
呵呵,看你这样喜欢去想是什么的,将来肯定会知道的!但是既然问了,我就说一下我自己的见解!
其实,大家都说,数据结构+算法=程序!数据结构就是提供一个程序中数据的逻辑视图!什么逻辑视图呢?就是在你看起来你这样来组织你的数据!比如说一张地图!有很多城市,每个城市之间有很多路,每条路有距离!让你来求一下给定的两个城市的最短路!然后你就可用“无向图”来组织这张地图!就是用节点表示城市,边表示路,边的权表示路长度!接下来你的程序就可以用算法在这张图上(无向图)上来操作!可能用dijkstra算法来求两点之间的最短路!
数组是一种数据结构!虽然简单,但是她也是一种数据的存储方式,就是这样一个挨一个的存储!数组也有很多很好的性质!
说这么多呢!其实数据结构是数据的组织方式,为你的程序提供更高的效率,不管用
数组,链表(单向,双向,循环等等),堆栈(最大堆,最小堆),队列(优先级队列)树(二叉树,红黑树,AVL树,B+树等等)区间树,并查集,图等等都是对于特定的问题,来说你这样组织数据是你的程序更加高效而已!数据结构和算法,一个用来存储数据,一个用来操作数据!
什么是数据结构
数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
名词定义
数据结构是指相互之间存在着一种或多种关系的数据元素的 *** 和该 *** 中数据元素之间的关系组成。记为:
Data_Structure=(D,R)
其中D是数据元素的 *** ,R是该 *** 中所有元素之间的关系的有限 *** 。
其它定义
Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在于该对象的实例和组成实 例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的 *** ”。
Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是ADT(抽象数据类型Abstract Data Type) 的物理实现。”
Robert L.Kruse在《数据结构与程序设计》一书中,将一个数据结构的设计过程分成抽象层、数据结构层和实现层。其中,抽象层是指抽象数据类型层,它讨论数据的逻辑结构及其运算,数据结构层和实现层讨论一个数据结构的表示和在计算机内的存储细节以及运算的实现。
数据结构具体指同一类数据元素中,各元素之间的相互关系,包括三个组成成分,数据的逻辑结构,数据的存储结构和数据运算结构。
研究对象
一、数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:
1. ***
2.线性结构
3.树形结构
4.图形结构
二、数据的物理结构:指数据的逻辑结构在计算机存储空间的存放形式。
三、数据结构的运算
数据结构有几种结构类型,分别是什么
如果指的是逻辑结构,分为4种: *** 、线性、树形、图形
如果指的是物理结构(也叫做存储结构),主要也是4种:顺序、链式、索引、散列
⑩ 数据结构与算法基础知识
1.数据结构的逻辑结构
(1)集合结构
(2)线性结构(存在唯一的第一个元素与唯一的最后一个元素)(eg: 线性表、队列、栈、字符串、数组、链表)
(3)树形结构(一对多)
(4)图形结构(多对多)
2.数据结构的物理(存储)结构
(1).顺序存储结构(插入与删除低效因为要挪动其他元素的位置。但是遍历简单)
(2).链式存储结构(插入与删除高效,但是遍历低效)
3.大O表示法(注意大O表示法表达的是最坏的情况)
规则:
(1)用常数1取代其他所有的常数(注意常数0也当1算)(3 -> 1, O(1))
(2) 只保留最高阶项(n^3+2n^2+5 ->n^3, O(n^3))
(3) 若存在最高阶,省略与其想成的常数(2n^3 -> n^3, O(n^3))
4. 时间复杂度类型
(1)常数阶
(2)线性阶
(3)平方阶
(4)对数阶
(5)立方阶
(6)nlog阶
(7)指数阶(O(2^n)或O(n!), 往往会造成噩梦般的时间消耗)
5. 空间复杂度(用大O表示法求解改算法的辅助空间即可,例如用于交换变量用的临时变量的数量)
六. 顺序存储的线性表
线性表结构特点:
(1) 存在唯一一个的被称作”第一个”的数据元素;
(2) 存在唯一一个的被称作”第二个”的数据元素;
(3) 除了第一个元素以外,结构中的每个数据元素均有一个前驱;
(4) 除了最后一个元素以外,结构中的每个数据元素均有一个后继。
七. 链式存储的线性表(单链表)
首元结点是链表中第一个值域不为空的结点。
头结点是一个值域为空且处于首位的结点。
首指针可指向首元结点也可指向头结点,但是如果指向头结点可以更加方便的处理单链表的插入和删除问题,不用再对首位做额外判断,并且指向头节点的指针永远不用变化。
*注意一下单链表的前插法和尾插法。尾插法更符合逻辑