试论C++语言在数据结构中应用

来源 :科技致富向导 | 被引量 : 0次 | 上传用户:zhongfeiran
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  【摘 要】数据结构是面向过程编程中的一个重要概念,即使在面向对象编程中也具有重要的地位,因为面对繁多而复杂的待处理数据,如果没有数据结构将数据组织起来,那么程序的编写将变得极为艰难。在整个程序编写的过程中,数据结构为编程中的法,而使用的语言就是编程中的术。在该文中将试析C++语言如何在数据结构中的运用,如何发挥出数据结构更好的效果。
  【关键词】C++;数据结构;计算机语言
  C++语言是从C语言继承而来,并从C语言的基础上增加了很多新的特性以适应新的技术要求。应该说C++是一个庞大的功能强悍的一种语言,它既可以完成与C语言一样的面向过程编程也可以完成面向对象编程。在面向过程编程中,C++也同样完成了对C语言的扩展,增加了很多的库与函数,这些库与函数的存在赋予了C++在数据结构的运用中超过C语言的能力。可以说,C++在数据结构中的运用灵活程度与使用方法超过了C语言。在数据与数据之间存在着各种各样的关系,这些关系称之为结构,而数据结构就是数据元素之间特定关系的集合。数据结构可以分为很多部分,但是基本结构主要有四种,这四种分别是:集合、线性结构、树形结构、图状结构。这四种基本的四类结构相互复合便可以组成成千上万中不同的数据结构。该文主要探讨C++语言对于一些常见结构的运用,也就相当于从底层讲述C++在数据结构中的运用。
  1.数据的逻辑表示、存储形式和操作
  要描述一组关联的数据元素,必然是一种抽象,一种逻辑的表示形式。这种逻辑表示应该独立于计算机,是数据元素本身所固有的。显然,这样的一组数据元素的逻辑结构应该包括数据元素本身和数据元素之间的联系。当一组关联的数据元素存储到计算机中时,必然以一种物理的形式组织和存放在计算机存储器中,它应该是这组数据元素的逻辑结构在计算机存储器中的映像,是依赖于计算机的。这种映像是这组数据元素的存储结构,它也能够体现数据元素本身以及数据元素之间的联系。就存储结构本身而言,它不体现任何相关的操作,只是对操作的方式会提出要求并产生影响。当对一组关联的数据元素进行加工处理时,相对应的则是一组相关的操作,这样的一组操作称为施加在这组数据元素之上的运算。运算的定义依赖于数据元素的逻辑结构,而运算的实现则依赖于存储结构,是通过计算机语言完成的,是对数据进行加工处理的方法和动态过程的描述。如果说数据结构这门课程包括了数据的逻辑结构、数据的存储结构和对数据所施加的运算等诸多方面的内容是行得通的。但如果说数据结构包括这3方面的内容则显得过于宽泛。数据结构应该是一组数据元素的静态结构的描述,它应该包括逻辑层面和物理层面两个方面。在逻辑层面上而言,是数据和数据之间关系的一种逻辑的描述形式,可以采用文字描述或采用图形方式来表示,也可以用数学的符号形式加以定义;在物理层面上而言,则是数据和数据之间关系在计算机存储器中的体现,同样也是一种静态结构形态。这种静态结构是不可见的,为了便于理解,这种形态也可以用文字描述或图形描述的方式逻辑地加以表示。或者说,数据结构是一组数据元素的全体以及数据元素之间的关系的全体,在逻辑层面上称为数据的逻辑结构,在物理层面上称为数据的存储结构。也可以说数据的存储结构是数据的逻辑结构在计算机存储器中的映像。典型的数据结构有集合结构、线性结构、树形结构和图形结构,它们都有逻辑的表示形式和物理的存储形态。数据的存储又有两种最基本的存储方式,即顺序存储方式和鏈接存储方式,散列和索引则是两种基本方式的复杂应用。这是为了便于数据的处理而采用的两种不同的存储技术,而不是数据结构的差异。
  2.在线性结构中的运用
  线性具体的表现形式有好多种,如线性链表、双向链表、堆栈、队列等,但是这些结构都有着共同的特性,它们都是唯一的一个开头的数据元素,也有唯一的一个最后的数据元素等,且除了第一个与最后一个元素外,每个元素都有唯一的前驱与后驱。这使得线性表的结构相对于其他的数据结构比较简单,更容易掌握,所以对于线性结构的使用也是最多的。在线性结构中,一个数据元素的寻找自己的前驱或者后驱有两种方式,这取决于这个线性结构在内存中的存储方式。线性结构在内存中的存储不一定是线性的,比如链表就不是线性的。线性结构的操作主要有三个,分别是插入、删除、修改。如果一个线性结构在内存中的存储也是线性的话,其操作会相对简单些,在C++语言中,可以直接使用C++提供的强大的运算速度处理数据元素,但是相对来讲复杂些,且这种操作手法与使用C语言操作线性结构的手法别无二致。除以上方法外,用户也可以使用C++的各种各样的容器,很多的容器都是各种类型的线性结构,使用这些容器就可以大大的减少操作线性结构的代码。至于C++实现代码究竟用的是内存非线性存储还是线性存储不需要使用者关心,这部分对于C++的使用者来讲是透明的。
  3.在树中的运用
  树与图都是非线性结构,且树是一种非常重要的数据结构。在自然界中存在着很多的树形结构,为了计算机更好的处理这些数据,所以抽象出了树形结构。树形结构是由众多的节点所构成,有且仅有一个根节点,剩余的节点组成了互不交叉干涉的子集,也叫根的子树,实际编程中用到的树,往往是多层的树,除了最下层的节点外其他的都是一个子树,由于这种抽象的类型很像自然界中的树,所以称之为树形结构。树形结构与线性结构的不同在于树形结构中的节点对应一个前驱,但是往往对应多个后驱,其整体结构并不是顺序的,而是从上往下扩散开的结构,而且树也可以分作多种类型,这些树形结构都有各自的特点,如二叉树、平衡树等,这些树的存储、构建与维护也经常使用不同方法。
  对于C++语言来说,所有使用树形结构的要求都能满足。比如树的链接一般是多点链接,而计算机的存储空间是顺序的,所以树在计算机中存储往往不是连续的,必须用到指针,而C++的指针恰恰非常强大。
  4.在图中的运用
  图形结构是数据结构中最为复杂的一种结构模型。在线性结构中有且只有一个前驱以及后驱,在树形结构中节点只有一个前驱以及多个后驱,子树之间并无交叉联系,呈现明显的层次感,但是在图形结构中,整个集合中的任意两个数据元素都可以存在着关系,这就造成了复杂的图形结构。
  鉴于图形结构千差万别,所以C++语言中没有提供能够直接进行图操作的函数,仅有一些特定的基础操作,对于图形的处理,只能依靠程序编写者具体问题具体分析了。C++在图形数据结构的处理中,有以下的几个优点:
  (1)较高的代码效率。虽然C++的运算速度不如C语言与汇编,但是相对于其他的高级语言来讲,已经非常快了,处理复杂问题的图问题是一个很合适的选择。
  (2)灵活的指针。C++的指针往往是C++初学者难以运用的功能,但是拥有指针后能施展的能力确实非常强大的,特别是处理离散数据方面具有无可比拟的优势。
  (3)严密的逻辑。C++逻辑非常严密,易于编写种种复杂的算法用来处理复杂的图形问题。总的来说,在处理图形结构数据时,C++语言是除了C语言以外的最佳选择。
  【参考文献】
  [1]付勇.数据结构的定义及其相关术语[J].电脑编程技巧与维护,2011(10).
其他文献
英语写作能力的高低是衡量学生英语能力的重要指标,而英语写作教学又是英语教学的重要组成部分。在现实的教学中,学生的英语写作能力还有很大的提升空间。在下文中,笔者将结合自
本文通过对荣华二采区10
期刊
本文通过对荣华二采区10
学生的主体作用,简单地讲,是指在教学过程中学生作为学习活动的主体出现,他们能够能动地发展自己的潜能。学生应是教学活动的中心,教师、教材、教学手段都应为学生的"学"服务。教师
图书是人类共同的精神财富,图书馆是组织人们共同使用这些财富的场所,对促进人类进步、社会发展起着举足轻重的作用。基于此,做好管理和服务,加强图书馆建设,积极发挥其社会
【摘 要】模糊控制技术是一种以模糊数学为基础而发展起来的一种新型的控制技术。其控制方式为一种非线性控制的方式,对那些无法应用数学模型或者取得數学模型相当的粗糙的系统的而言可以取得让人满意的控制效果。直流电机转速的控制是一种非线性的时变系统其变化过程相当的复杂。本文主要讨论了利用模糊控制技术设计的PIC单片机模糊速度控制系统,对其速度采取模糊算法并对其进行控制。实验表明该系统比传统的PID速度控制系
无论做什么事,想要进步就需要不断对自己的言行进行反思.那么,反思习惯要从小养成.文章首先分析了反思学习会给学生带来的好处,不仅是学习成绩的提高,更重要的是小学生生活习
隐喻经常运用在诗歌中,诗歌与歌词有着密不可分的联系,因此歌词中同样有大量隐喻存在。以未成年人为主要接收对象的少儿歌曲又有不同于成人歌曲的隐喻特征。本文主要探讨当代
本文通过对荣华二采区10
作文是中学生表达自己,记录生活点滴的重要方式。但对于作文,中学生总是遇到落笔难题,写作的动机刺激与形成的机制就显得尤为重要。本论文试从写作的内部机制与外部机制两方面来