数据结构讲的是什么
问题一:数据结构在讲什么? 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。一、线性表
(一)线性表的定义和基本操作
(二) 线性表的实现
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)
(九) 基数排序
(十) 各种内部排序算法的比较
(十一) 内部排序算法的应用
问题二:数据结构到底是讲什么的呢 相信你也知道俗话说:计算机程序=算法+数据结构。数据结构就是讲的怎样在计算机程序中组织存储批量数据,以及为什么这样组织。相同的一批数据,不同的组织方式(不同的数据结构)有不同的优缺点,有的利于查找(hash);有的利于排序(树);有的利于插入、删除(节点式链表)。在深入还有不同组织方式的查找、排序等等操作的时间、空间复杂度。
问题三:数据结构是什么意思?希望讲的通俗一点。 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。bjl.website
问题四:什么是数据结构? 30分 数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的 *** 。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。
数据结构在计算机科学界至今没有标准的定义。个人根据各自的理解的不同而有不同的表述方法:
Sartaj Sahni在他的《数据结构、算法与应用》一书中称:“数据结构是数据对象,以及存在胆该对象的实例合组成实例的数据元素之间的各种联系。这些联系可以通过定义相关的函数来给出。”他将数据对象(data object)定义为“一个数据对象是实例或值的 *** ”。
Clifford A.Shaffer在《数据结构与算法分析》一书中的定义是:“数据结构是 ADT(抽象数据类型Abstract Data Type) 的物理实现。”
问题五:数据结构学的到底是什么,和算法的关系 本人乃一个数据痴迷者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:你们在C/C++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:我们在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:int i;这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进......>>
问题六:谁的数据结构讲的好 你好。
用网易公开课,可以看斯坦福的和MIT的,那个秒杀国内的。
可以用手机WIFI看,也可以用电脑看。
如果我的回答没能帮助您,请继续追问。.
问题七:用你的理解说,什么是数据结构. 数据结构+算法=程序数据结构是指数据在计算机内存(或磁盘中)的组织形式
所谓组织形式是指数据的
{
逻辑结构:数据间的邻接关系 如 线性、树形、图状;
存储结构:数据以何种方式进行存储 如 顺序式、链式;
}
例:对10个人的成绩进行排序的算法
{
首先,将10个人的信息和成绩输入计算机
然后进行排序
最后,输出结果
}第一步是存储信息 关键要考虑2个问题 :以何种方式将10个人的信息存入(存储结构),存入候每个人之间的关系是什么?(逻辑结构)
即 要求 指明数据在计算机内的组织形式 这是一个数据结构问题 显然如果只有这10个数据的话,我们会选择数组这种数据结构进行组织
先说几种常见的数据结构: 数组 链表 二叉树 栈 哈希表等所有的数据结构都通过其逻辑结构和存储结构来定位,二者也是每一个数据结构的核心部分。如 1维数组的
逻辑结构:线性
存储结构:顺序式
单链表 是 线性和链式 队列是 线性和顺序式解决了数据的存储问题
接着思考如何排序
首先处理同一类问题(此处为排序),如果数据结构不同,其算法也不同。同样是排序却有堆排序和数组排序之分等
因此在考虑算法时,要注意考虑数据结构。
在程序设计时更应该综合考虑算法与数据结构的选择与搭配,以设计出最适合的程序
因此 程序设计可分二步
{
1.选择数据结构
2.根据选择的数据结构设计算法
}
然后一个程序即构建成功了。
原创.
问题八:数据结构到底怎么学比较好啊? 写数据结构代码编程了学习C语言,是大多数初学者的经验,其实有办法可以避免的。
多想> 多看 > 多写字 > 多动键盘
养成好的编程习惯很重要。
做任何工作之前,要把自己的思路整理清楚 参考别人的相关工作经验,针对自己的需求做分析 把思路落实到纸张上 采用自顶向下的编程方式,先把你的个函数的功能,入口和出口描述清楚 每个函数内部的执行流程,都要注释好。 最后再分段逐步编码。
这样可以有效的避免大多数的错误发生。 即便出现错误,也很容易定位到问题的所在。 不知道大家是怎样看待数据结构这门课的,有多少人觉得数据结构很难呢?我知道还是有一些同学这样觉得的,有时候我跟我的朋友讲要怎样学,讲了一大堆以后,他就向我抱怨:我以前c++都没有学好,数据结构更学不好了,这哪跟哪的话啊,数据结构与c++没有什么关系,我想假如抱有这样的心态,自己就不相信自己,那是不可能学好的,然后那些觉得数据结构很难的同学,我想他们应该会很看重数据结构的吧,然后就一天到晚捧着一本数据结构,这样不会觉得很累吗?而且因为觉得很难,就容易不相信自己,学的效率也不会很好,个人认为数据结构很好学,很容易学,或许这有点妄自菲薄吧,但是因为我觉得很容易,当然就会觉得自己没问题,学得很轻松,效果也还可以。大家都是从高考走过来的,应该知道心态的重要性吧,两种不同的心态,完全就是两种不同的效果。学了这么久数据结构了,我们到底在学些什么呢?不知道大家有没有想过,那现在我们现在来归纳一下我们学习的内容吧,其实学到现在我们也就学了几种普通的数据结构,象二叉树,树,图,还有排序的问题,前面的线性表和字符串也就是一些概念,当然还有一个很重要的KMP算法,然后在每种数据结构中我们也就是学到了若干处理的算法,我想真正数起来也就是几十个算法吧。学习数据结构也就是要掌握这几十种算法,多简单。至于如何掌握每个算法呢,我想就是多看看书,重要的是能够理解。 如果真的想学好数据结构的话,最好是能够自己思考问题,不要刚想了一会就觉得做不出来,然后就去问其他人。其实张老师给我们的作业还是基于我们的水平的,我绝对相信我们自己能够独自想出算法,虽有可能会比较长时间吧,但是这样肯定会比问其他人学到更多的东西。当然我并不是说不要问同学,有时候就是脑筋转不过来,一问别人就懂了,当然问了别人不能只是我知道了这个算法,还应该去想如何思考才能得到这个算法,这样水平会提高很多。
很多计算机专业的同学对于大学2年级开设的数据结构课程很是头痛. 看见大家总在谈论数据结构重要性,可使自己学习却总也找不到合适的方法. 下面我和大家分享一下我过去一年多以来学习和应用数据结构方面一些经验. 内容都是来自作者本人的一些经历和体验,希望对于大家学习数据结构有引导作用。 1什么是数据结构 数据结构从文字上面来看,为数据和结构两部分。这样就很容易联系到数据结构的本质是一种对于数据结构花的知识。补充一个知识点,数据结构本质和离散数学有很密切的关系。离散数学是处理的是离散(非连续的)的数据,站在数据结构的观点上来看,也可以理解是一种非连续数据的结构。 2数据结构和程序设计语言 数据结构和程序设计语言本身没有任何联系,唯一有的关系就实用程序语言去描述数据结构。 因为数据结构是一种抽象数据,通过程序设计语言可以将在计算机中进行实现。今天大学里数据结构课程常用来描述数据结构的语言有C程序设计语言,C 程序设计语言和JAVA程序设计语言.而对于喜欢其他语言的同学完全可以自己通过学习数据结构后用自己熟悉的程序设计语言去完成程序化的描述. 我自己过去......>>
问题九:数据结构视频哪个讲的比较好 ! 清华大学 严蔚敏 的 - =# 优酷上有全集…… 但兄台你要忍住、刚开始看的时候吓坏我了、、、还有一个是中山大学的、普通话不太标准 讲的还比较彻底……都是在优酷或土豆上的
绛旓細鏁版嵁缁撴瀯璁茬殑灏辨槸鏁版嵁鐨勭粍缁囧舰寮銆傚儚鏍堛侀槦鍒椼佷簩鍙夋爲绛夐兘鏄竴绉嶆暟鎹殑缁勭粐褰㈠紡銆傞兘鏄氳繃涓瀹氱殑绋嬪簭浠g爜鏉ュ疄鐜扮殑涓绉嶇壒瀹氱殑绠楁硶銆傛暟鎹粨鏋勬槸璁$畻鏈哄瓨鍌ㄣ佺粍缁囨暟鎹殑鏂瑰紡銆傛暟鎹粨鏋勬槸鎸囩浉浜掍箣闂瀛樺湪涓绉嶆垨澶氱鐗瑰畾鍏崇郴鐨勬暟鎹厓绱犵殑闆嗗悎銆傞氬父鎯呭喌涓嬶紝绮惧績閫夋嫨鐨勬暟鎹粨鏋勫彲浠ュ甫鏉ユ洿楂樼殑杩愯鎴栬呭瓨鍌ㄦ晥鐜囥傛暟鎹...
绛旓細1銆佹暟鎹粨鏋勪富瑕佸唴瀹规槸浠嬬粛缂栫▼涓父鐢ㄧ殑鏂规硶鍜岀畻娉曠殑浼樺寲锛屼娇绋嬪簭鐨勮繍琛屾晥鐜囨洿楂銆2銆佺畻娉曠殑璁捐鍙栧喅浜庢暟鎹紙閫昏緫锛夌粨鏋勶紝鑰岀畻娉曠殑瀹炵幇渚濊禆浜庨噰鐢ㄧ殑瀛樺偍缁撴瀯銆3銆佹暟鎹殑瀛樺偍缁撴瀯瀹炶川涓婃槸瀹冪殑閫昏緫缁撴瀯鍦ㄨ绠楁満瀛樺偍鍣ㄤ腑鐨勫疄鐜帮紝涓轰簡鍏ㄩ潰鐨勫弽鏄犱竴涓暟鎹殑閫昏緫缁撴瀯锛屽畠鍦ㄥ瓨鍌ㄥ櫒涓殑鏄犺薄鍖呮嫭涓ゆ柟闈㈠唴瀹癸紝鍗虫暟鎹...
绛旓細鏁版嵁缁撴瀯鏄粙浜庢暟瀛︺佽绠楁満纭欢鍜岃绠楁満杞欢涓夎呬箣闂寸殑涓闂ㄦ牳蹇冭绋銆 璁$畻鏈虹瀛︿腑涓紝鏁版嵁缁撴瀯涓嶄粎鏄竴鑸▼搴忚璁★紙鐗瑰埆鏄潪鏁板艰绠楃殑绋嬪簭璁捐锛夌殑鍩虹锛岃屼笖鏄璁″拰瀹炵幇缂栬瘧绋嬪簭銆佹搷浣滅郴缁熴佹暟鎹簱绯荤粺鍙婂叾浠栫郴缁熺▼搴忓拰澶у瀷搴旂敤绋嬪簭鐨勯噸瑕佸熀纭銆傛湰璇剧▼鐨勭洰鐨勫拰浠诲姟鏄細閫氳繃鏈绋嬬殑瀛︿範锛屼娇瀛︾敓鑳芥纭垎鏋...
绛旓細1锛1 鏁版嵁缁撴瀯鐨勬蹇垫暟鎹粨鏋勬槸璁$畻鏈虹瀛︿笌鎶鏈笓涓氱殑涓撲笟鍩虹璇撅紝鏄崄鍒嗛噸瑕佺殑鏍稿績璇剧▼銆傛墍鏈夌殑璁$畻鏈虹郴缁熻蒋浠跺拰搴旂敤杞欢閮借鐢ㄥ埌鍚勭绫诲瀷鐨勬暟鎹粨鏋勩傚洜姝わ紝瑕佹兂鏇村ソ鍦拌繍鐢ㄨ绠楁満鏉ヨВ鍐冲疄闄呴棶棰橈紝浠呮帉鎻″嚑绉嶈绠楁満绋嬪簭璁捐璇█鏄毦浠ュ簲浠樹紬澶氬鏉傜殑璇鹃鐨勩傝鎯虫湁鏁堝湴浣跨敤璁$畻鏈恒佸厖鍒嗗彂鎸ヨ绠楁満鐨勬ц兘锛岃繕...
绛旓細鍏ㄥ浗楂樼瓑鑱屼笟鏁欒偛璁$畻鏈虹郴鍒楄鍒掓暀鏉愶細鏁版嵁缁撴瀯锛鏄竴鏈叏闈粙缁嶆暟鎹粨鏋勫熀纭鐭ヨ瘑鐨勬暀鏉銆傞鍏堬紝鏁版嵁缁撴瀯缁涓哄鐢熸彮寮浜嗘暣涓绋嬬殑搴忓箷锛屾竻鏅板湴闃愯堪浜嗚瀛︿範鐨勬牳蹇冩蹇点傛帴鐫锛岀嚎鎬ц〃銆佹爤鍜岄槦鍒楃瓑鍐呭锛屾繁鍏ユ祬鍑哄湴璁茶В浜嗘暟鎹殑鍩烘湰缁勭粐褰㈠紡锛屽府鍔╁鐢熷缓绔嬪熀纭銆傚湪鏇磋繘闃剁殑閮ㄥ垎锛屼覆銆佹暟缁勫拰骞夸箟琛ㄨ瑙d簡鏁版嵁鐨...
绛旓細闂涓:鏁版嵁缁撴瀯鍦ㄨ浠涔? 鏁版嵁缁撴瀯鏄绠楁満瀛樺偍銆佺粍缁囨暟鎹殑鏂瑰紡銆傛暟鎹粨鏋勬槸鎸囩浉浜掍箣闂村瓨鍦ㄤ竴绉嶆垨澶氱鐗瑰畾鍏崇郴鐨勬暟鎹厓绱犵殑 *** 銆傞氬父鎯呭喌涓,绮惧績閫夋嫨鐨勬暟鎹粨鏋勫彲浠ュ甫鏉ユ洿楂樼殑杩愯鎴栬呭瓨鍌ㄦ晥鐜囥傛暟鎹粨鏋勫線寰鍚岄珮鏁堢殑妫绱㈢畻娉曞拰绱㈠紩鎶鏈湁鍏炽 涓銆佺嚎鎬ц〃 (涓)绾挎ц〃鐨勫畾涔夊拰鍩烘湰鎿嶄綔 (浜) 绾挎ц〃鐨勫疄鐜...
绛旓細鏁欏鍐呭涓嶅悓銆佸叧绯讳笉鍚屻1銆佹暀瀛﹀唴瀹逛笉鍚岋細鏁版嵁缁撴瀯涓昏璁茶В鏁版嵁鐨勫瓨鍌ㄥ拰缁勭粐锛涚畻娉曡璁′笌鍒嗘瀽涓昏璁茶В濡備綍楂樻晥鍦板鐞嗗拰鍒嗘瀽鏁版嵁銆2銆佸叧绯讳笉鍚岋細鏁版嵁缁撴瀯鏄绠楁硶瀹炵幇鐨勫熀纭锛岀畻娉曟绘槸瑕佷緷璧栦簬鏌愮鏁版嵁缁撴瀯鏉ュ疄鐜帮紱鍙嶈繃鏉ワ紝濡傛灉鏁版嵁缁撴瀯鑴辩浜嗙畻娉曪紝鏁版嵁缁撴瀯鍙槸涓鍫嗗喎鍐板啺鐨勬暟鎹
绛旓細閫氬父鎵璇寸殑鈥鏁版嵁缁撴瀯鈥濇槸鎸囨暟鎹殑閫昏緫缁撴瀯,鍖呮嫭绾挎х粨鏋(绾挎ц〃)鍜岄潪绾挎х粨鏋(鏍戙佸浘銆佸缁存暟缁勩佸箍涔夎〃),瀛樺偍缁撴瀯鍖呮嫭涓缁存暟缁勩侀摼鎺ヨ〃銆佺储寮曡〃銆佹暎鍒楄〃銆 闂:骞夸箟琛ㄧ殑閫掑綊绠楁硶 娈蜂汉鏄:骞夸箟琛ㄧ殑璇诲綊绠楁硶鐪嬩功銆備笉鐭ヤ綘瑕侀棶浠涔闂?鏄惁甯屾湜鐭ラ亾閲嶇偣? 闂:鑰佸笀浣璁茬殑杩欒祫鏂欌滆绋嬪疄楠屾暀鏉愬悗闈㈢殑缁煎悎缁冧範棰樺拰楠屾寚瀵...
绛旓細鏁版嵁缁撴瀯鏄 缂栫▼涓渶瑕佺敤鍒扮殑涓浜涚粨鏋勶紝姣斿鍫嗘爤锛屾爲缁撴瀯锛屽浘缁撴瀯绛夌瓑銆備富瑕佺敤浜庣紪绋嬨傛暟鎹簱鍘熺悊璁茬殑鏄 鏁版嵁搴撴柟闈㈢殑涓滆タ锛屽寘鎷浣曞缓绔嬫暟鎹〃锛屽缓绔嬬储寮曪紝sql璇彞锛屾暟鎹簱鑼冨紡绛夌瓑銆
绛旓細浣犱滑鐨勪功涓婂紑濮嬪簲璇ュ湪璁茬┒鏁版嵁鐨勭墿鐞嗗瓨鍌ㄧ粨鏋/閫昏緫瀛樺偍缁撴瀯绛夋蹇碉紝璇存槑鏁版嵁缁撴瀯棣栧厛灏辨槸鈥鏁版嵁鐨缁撴瀯鈥濓紝鍦ㄥ唴瀛樹笂鐨勫瓨鍌ㄦ柟寮忥紝灏辨槸鐗╃悊鐨勫瓨鍌ㄧ粨鏋勶紝鍦ㄧ▼搴忎娇鐢ㄤ汉鍛樼殑鎬濇兂涓婂畠鏄昏緫鐨勩傛瘮濡傦細浣犱滑鍦–/C++涓涔犲埌閾捐〃锛岄偅涔堥摼琛鏄粈涔涓涓蹇碉紝浣犱滑浣跨敤鎸囬拡鍒跺悜涓嬩竴涓粨鐐圭殑棣栧湴鍧锛岃浠栦滑涓茶仈璧锋潵锛屽舰鎴...