2023-11-20 02:24来源:m.sf1369.com作者:宇宇
在可视化化程序设计的今天,借助于集成开发环境可以很快地生成程序,程序设计不再是计
算机专业人员的专利。很多人认为,只要掌握几种开发工具就可以成为编程高手,其实,这
是一种误解。要想成为一个专业的开发人员,至少需要以下三个条件:
能够熟练地选择和设计各种数据结构和算法。
至少要能够熟练地掌握一门程序设计语言。
熟知所涉及的相关应用领域的知识。
其中,后两个条件比较容易实现,而第一个条件则需要花相当的时间和精力才能够达到,
它是区分一个程序设计人员水平高低的一个重要标志,数据结构贯穿程序设 计的始终,缺乏
数据结构和算法的深厚功底,很难设计出高水平的具有专业水准的应用程序。曾经有一本经
典计算机专业书籍叫做《数据结构+算法=程序》,也说 明了数据结构和算法的重要性。
《数据结构》是计算机科学与工程的基础研究之一,掌握该领域的知识对于我们进一步
进行高效率的计算机程序开发非常重要。无论在中国还是在美国,《数据结 构》一直是大学
的计算机专业重要的专业基础课。例如,在著名的美国的加州大学伯克利分校(著名的 BSD
Unix 的发源地,很多Unix 操作系统由它派生而来或带有它的痕迹——例如FreeBSD、Sun 公
司的Solaris、IBM 的AIX),就用一个学 期开设《数据结构和算法》课程(在这之前,用一
个学期开设《C++程序设计》课程)。
实《数据结构》并不难。 在学习《数据结构》之前,要求学生有 C/C++基础。可以这样说,
C/C++是其他程序设计语言的基础。掌握了 C/C++,学习其他语言就会易如反掌。例 如,微
软的MFC 类库基于C++;ATL 基于C++中的模板类;Java 语言基于C++思想,其编程风格与C++
差别很小;C++ Builder 又是基于C++;Delphi 中的有关对象的概念与C++中的对象几乎完全
一致。C++相比其他语言具有与计算机硬件集合紧密、代码效率 高,这是Java 语言和其他高
级语言所无法比拟的。这样,C/C++对于学习计算机系统结构有很大的好处。
数据结构是对非数值型数据的处理
学了以后你就会对各种类型的数据的处理有了一个大概的掌握
比如我们的千千静软件它其实就是处理线性表数据
常用数据结构
数组 (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),按这个思想建立的表为散列表。
数据结构是计算机科学里非常重要的方面,很多人编程序达到一定的水平之后,都大感进步的困难,因为对于语言、平台等等都已经非常熟悉了,而对于算法却难于设计,学好了数据结构就能合理设计各种编程语言的算法。
当然数据结构的功用远不只这些,人们常说C语言是基础,实际上C语言包含了很多通用成熟的数据结构,所以数据结构也应该属于一门基础学科。
至于能培养什么,我想编程高手没有不精通数据结构的