请问数据结构和算法二者之间究竟是什么关系?应该先学哪一个?

作者&投稿:泊婵 (若有异议请与网页底部的电邮联系)
数据结构学的到底是什么?和算法有什么关系?~

首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。
上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的。比如:
你们在C/C++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。
我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。

本人乃一个数据痴迷者,在计算机的道路上,也是一个数据结构的痴迷者,现在大学里面和同学搞开发也痴迷于数据库,我就我个人的理解给你谈一谈:首先,数据结构是一门计算机语言学的基础学科,它不属于任何一门语言,其体现的是几乎所有标准语言的算法的思想。上面的概念有一些模糊,我们现在来具体说一说,相信你门的数据结构使用的是一门具体的语言比如C/C++语言来说明,那是为了辅助的学习数据结构,而数据结构本身不属于任何语言(相信你把书上的程序敲到电脑里面是不能通过的吧,其只是描述了过程,要调试程序,还需要修改和增加一些东西)。你们的书上开始应该在讲究数据的物理存储结构/逻辑存储结构等概念,说明数据结构首先就是“数据的结构”,在内存上的存储方式,就是物理的存储结构,在程序使用人员的思想上它是逻辑的,比如:你们在C/C++中学习到链表,那么链表是什么一个概念,你们使用指针制向下一个结点的首地址,让他们串联起来,形成一个接一个的结点,就像显示生活中的火车一样。而这只是对于程序员的概念,但是在内存中存储的方式是怎样的那?对于你程序员来说这是“透明”的,其内部分配空间在那里,都是随机的,而内存中也没有一个又一根的线将他们串联起来,所以,这是一个物理与逻辑的概念,对于我们程序员只需要知道这些就可以了,而我们主要要研究的是“逻辑结构”。我可以给你一个我自己总结的一个概念:所有的算法必须基于数据结构生存。也就是说,我们对于任何算法的编写,必须依赖一个已经存在的数据结构来对它进行操作,数据结构成为算法的操作对象,这也是为什么算法和数据结构两门分类不分家的概念,算法在没有数据结构的情况下,没有任何存在的意义;而数据结构没有算法就等于是一个尸体而没有灵魂。估计这个对于算法的初学者可能有点晕,我们在具体的说一些东西吧:我们在数据结构中最简单的是什么:我个人把书籍中线性表更加细化一层(这里是为了便于理解在这样说的):单个元素,比如:int i;这个i就是一个数据结构,它是一个什么样的数据结构,就是一个类型为int的变量,我们可以对它进行加法/减法/乘法/除法/自加等等一系列操作,当然对于单个元素我们对它的数据结构和算法的研究没有什么意义,因为它本来就是原子的,某些具体运算上可能算法存在比较小的差异;而提升一个层次:就是我们的线性表(一般包含有:顺序表/链表)那么我们研究这样两种数据结构主要就是要研究它的什么东西那?一般我们主要研究他们以结构为单位(就是结点)的增加/删除/修改/检索(查询)四个操作(为什么有这样的操作,我在下面说到),我们一般把“增加/删除/修改”都把它称为更新,对于一个结点,若要进行更新一类的操作比如:删除,对于顺序表来说是使用下标访问方式,那么我们在删除了一个元素后需要将这个元素后的所有元素后的所有元素全部向前移动,这个时间是对于越长的顺序表,时间越长的,而对于链表,没有顺序的概念,其删除元素只需要将前一个结点的指针指向被删除点的下一个结点,将空间使用free()函数进行释放,还原给操作系统。当执行检索操作的时候,由于顺序表直接使用下标进行随机访问,而链表需要从头开始访问一一匹配才可以得到使用的元素,这个时间也是和链表的结点个数成正比的。所以我们每一种数据结构对于不同的算法会产生不同的效果,各自没有绝对的好,也没有绝对的不好,他们都有自己的应用价值和方式;这样我们就可以在实际的项目开发中,对于内部的算法时间和空间以及项目所能提供的硬件能力进行综合评估,以让自己的算法能够更加好。(在这里只提到了基于数据结构的一个方面就是:速度,其实算法的要素还应该包括:稳定性、健壮性、正确性、有穷性、可理解性、有输入和输出等等)为什么要以结点方式进行这些乱七八糟的操作那?首先明确一个概念就是:对于过程化程序设计语言所提供的都是一些基础第一信息,比如一些关键字/保留字/运算符/分界符。而我们需要用程序解决现实生活中的问题,比如我们要程序记录某公司人员的情况变化,那么人员这个数据类型,在程序设计语言中是没有的,那么我们需要对人员的内部信息定义(不可能完全,只是我们需要那些就定义那些),比如:年龄/性别/姓名/出生日期/民族/工作单位/职称/职务/工资状态等,那么就可以用一些C/C++语言描述了,如年龄我们就可以进行如下定义:int age;/*age变量,表示人员公司人员的年龄*/同理进行其他的定义,我们用结构体或类把他们封装成自定义数据类型或类的形式,这样用他们定义的就是一个人的对象的了,它内部包含了很多的模板数据了。我就我个人的经历估计的代码量应该10000以内的(我个人的经理:只是建议,从你的第一行代码开始算,不论程序正确与否,不论那一门语言,作为一个标准程序员需要十万行的代码的功底(这个是我在大学二年级感觉有一定时候的大致数据,不一定适合其他人),而十万行代码功底一般需要四门基础远支撑,若老师没有教,可以自学一些语言)。

一般来说我觉得先学算法比较好,但算法和数据结构都是相辅相成的,要学好算法要有一定数据结构的基础,要学数据结构亦要有算法基础。但算法比数据结构更重要一些,因为没有算法只有数据结构是没用的~

数据结构+算法=程序
就是说两者是同样重要,C语言的经典算法都是很难的,数据结构也不好学,不过就是要想编出高质量的程序,数据结构必须学好,所以建议你,不要分开看,最好是一起看,虽然这样比较难,可是只要选择了,就不要怕困难,要想学好程序,不下苦工是不行的。

数据结构.
其实你在学数据结构时也已经学算法了,两者分不开,试问下,你学数据结构就只学什么是数据结构,有什么类型?肯定离不了上机操作,写程序,所以说不用区分这么详细.
如果不知道数据结构,那些算法中讲个结构你不懂,还是得回去看数据结构.
再:turbo c ?界面挺难用的,调试不方便,建议换个编译器,大部分;C++编译器都能编译C,如Dev-cpp,VC..


《数据结构与算法分析:C语言描述(原书第2版) 》这本书比起其他书,可以...
Kernighan的《程序设计实践》是让你全面了解编程该做些什么的经典著作,尽管这书非常地薄。cormen的《算法导论》和Skiena 《算法设计手册》是比《数据结构与算法分析》更大部头的巨著。Bentley的《编程珠玑》(1,2卷)将带你领略算法的力量。侯捷的《STL源码剖析》,深入讲解C++标准库的实现细节,让你...

请问,怎么有步骤地学好数据结构与算法JAVA语言这门专业?
1. "我想学好基础的数据结构和算法! "不多说,有这心就往下看。2. "我应该准备些什么? "a. 这本橙书: 《算法 第四版》--亚马逊中文版: amazon.cn 的页面 --线上资源: Algorithms, 4th Edition by Robert Sedgewick and Kevin Wayne b. 注册Coursera, 依次加入这2门课: <算法, 第一...

数据结构与算法分析 —— C 语言描述:二叉树
因为一棵二叉树最多有两个儿子,所以我们可以用指针直接指向它们。树节点的声明在结构上类似于双链表的声明,在声明中,一个节点就是由 key(关键字)信息加上两个指向其他节点的指针(Left 和 Right)组成的结构。应用于链表上的许多法则也可以应用到树上。特别地,当进行一次插入时,必须调用 malloc ...

算法与数据结构的问题,急!!!
ii)从字典中选择50000个不同的词插入,这些词大部分都是排序的 你只需关心速度性能即可,可暂不考虑内存性能。供参考,log2(10000)约等于13,log2(50000)约等于16,log2(100000)约等于17.注意:“比较”意即讨论不同数据结构的相似特点 “对比”则是请讨论不同数据结构的不同之意。这题不是选1...

数据结构与算法(C++版)目录
本书详细阐述了数据结构与算法的基本概念、实现与应用。从第一章“绪论”开始,深入浅出地介绍了数据结构的概念、学习的必要性、抽象数据类型及其实现、算法与算法分析、实用程序软件包以及实例研究等内容。通过实例,如生命游戏、计算π、一元多项式表示、计算阶乘等,直观地展示了理论知识的应用。第二章“...

数据结构与算法分析 有两个版本,一个是C版本,另一个是C++描述版。他们...
区别就在于:对于数据结构,如果用C语言实现链表结构,则只能提供一些链表的操作函数,无法将链表当成一个整体对象,而用C++则可以实现一个链表类,将链表封装成一个整体。而对于算法来说,则一样,C++中的具体算法也是用C语言实现的。

数据结构与算法知识?
那数据结构和算法有什么关系呢?为什么大部分书都把这两个东西放到一块儿来讲呢?这是因为,数据结构和算法是相辅相成的。数据结构是为算法服务的,算法要作用在特定的数据结构之上。因此,我们无法孤立数据结构来讲算法,也无法孤立算法来讲数据结构。比如,因为数组具有随机访问的特点,常用的二分查找算法...

如何才算精通算法和数据结构
精通是你自己认为自己比大部分人都强了,你要知道别人在做什么,你都会了,你还有自己的经验和独到之处,就算是精通了看看微软的面试题吧,问个简单问题,如何检测一个链表有环?给你一个算法,你能否看出它是否足够优化,是否知道它的时间空间复杂度,给你一个实际问题,比如存储的价格和计算的价格,...

哪位大佬有 数据结构与算法(C语言版),求发这教材的网盘链接
百度网盘数据结构与算法(C语言版)高清在线观看 https:\/\/pan.baidu.com\/s\/1nNt35bE8FY9EwtgEzRtSKQ pwd=1234 提取码:1234 内容简介 《数据结构与算法:C语言版》是2010年10月1日机械工业出版社出版的图书。该书共10章,一方面,涵盖数据结构的基本概念,定义了线性表、栈、队列、串、数组、广...

算法和数据结构的关系
因为有了数据结构,算法才能诞生。反过来,算法又是数据结构得以维持的一个条件,没有算法,数据根本无法有规律的打交道,也就是说数据的间只会是杂乱无章地碰撞,这样数据结构就会消灭。算法是绝对运动的,数据结构是相对静止的,二者是不可分割的关系。数据结构和算法不仅仅是计算机中才有的,计算机是...

密云县19685393987: 数据结构和算法有什么关系?数据结构就是算法吗? -
景哗卡林: 它们可以相互区别也可以相互统一.广义上讲,算法是某一系列运算步 骤,它表达解决某一类计算问题的一般方法,对这类方法的任何一个输入,它可以按步骤一步一步计算,最终产生一个输出.但是对于所有的计算问题,都离不开要 计算的...

密云县19685393987: 算法与数据结构的关系是什么 -
景哗卡林: 算法是一种思想; 数据结构是一种属性.

密云县19685393987: 数据结构,算法是什么意思?他们之间有什么联系? -
景哗卡林: 数据结构指数据在计算机中存储存在的方式,比如 文件在硬盘中,有二进制,文本等形式存放, 程序中的一组数字可能放在数组里面,也可能在栈里面,也肯能在链表里面 算法就是计算机处理解决问题的计算机能理解的方法,比如算一个阶乘 ...

密云县19685393987: 请问数据结构和算法二者之间究竟是什么关系?应该先学哪一个? -
景哗卡林: 一般来说我觉得先学算法比较好,但算法和数据结构都是相辅相成的,要学好算法要有一定数据结构的基础,要学数据结构亦要有算法基础.但算法比数据结构更重要一些,因为没有算法只有数据结构是没用的~

密云县19685393987: 数据结构与算法有区别么?二者和高数有什么关系?如果要学习,应该怎么入手?本人没读过大学. -
景哗卡林: 数据结构是链表,队列,栈,堆,图等基本操作单元的操作问题,算法是通过对复杂问题分析,整理,然后得到一个最高效的解决办法,这两个和高数的关系个人觉得不是很大,如果要学习的话,直接去本书来看,仔细看都很好懂的.

密云县19685393987: C,数据结构,算法,这是什么关系
景哗卡林: 1、C 计算机编程语言.(计算机可以识别,并且执行的程序就是靠这些高级计算机语言实现) 2、数据结构指的是数据之间的相互关系,即数据的组织形式. 1.数据结构一般包括以下三方面内容: ① 数据元素之间的逻辑关系,也称数据的逻辑...

密云县19685393987: 什么是算法与数据结构 -
景哗卡林: 拿华腾的交通卡系统做例子吧 先说数据结构:程序里面有很多用户信息,这些信息是用结构体存放,是用链表的形式,还是用哈希表等等的方法进行排列,这个就是数据结构 算法:要从这些数据结构里找出一个结点,是用遍历搜索呢还是用折半搜索之类的方法,叫做算法.LZ可以体会下.

密云县19685393987: 数据结构这门课是讲什么的?我学了一个月了,还是搞不清它是干什么的. -
景哗卡林: 一般数据结构和算法一起研究的(其实数据结构这门学科就包括算法),弄懂数据结构概念,算法概念,和他俩之间的关系,你就知道它有多重要了,学不好这个,只能说明还是门外汉啊. 数据结构: 当然就有存储结构和逻辑结构两种,分别...

密云县19685393987: 算法与数据结构有什么不一样? -
景哗卡林: 说得狭隘点吧,比如计算一个三角形的面积,判断能不能构成三角形,能的话怎么计算就是一个算法,而你所用到的数据的存储方式调用方法就涉及到数据结构的部分了.希望你能区分它们.百科里的: 计算机是一门研究用计算机进行信息表示...

密云县19685393987: 数据结构和算法为什么这么重要? -
景哗卡林: 算法可以理解为做一件事、任务的思路和方案;这个重要性应该能明白吧. 而数据结构则是为了更好、更方便的实现算法.举个例子,不知道恰当不恰当: 你想自己造一座房子.于是你设计了一个方案(==算法):首先选地址,然后买材料,最后动手造; 为了能较好的完成造房子,你设计一种(大)砖头(==数据结构),这样堆砌起来比较方便.你自己造的大砖头相当于你设计的“数据结构”.

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网