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

时间:2022-05-22 03:47:35

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

【摘要】数据结构是面向过程编程中的一个重要概念,即使在面向对象编程中也具有重要的地位,因为面对繁多而复杂的待处理数据,如果没有数据结构将数据组织起来,那么程序的编写将变得极为艰难。而数据结构虽好,但终究是思想,它还需要一个实现的途径,所以在整个程序编写的过程中,数据结构为编程中的法,而使用的语言就是编程中的术。在该文中将试析C++语言如何在数据结构中的运用,如何发挥出数据结构更好的效果。

【关键词】C++;数据结构;计算机语言

1.数据的逻辑表示、存储形式和操作

要描述一组关联的数据元素,必然是一种抽象,一种逻辑的表示形式。这种逻辑表示应该独立于计算机,是数据元素本身所固有的。显然,这样的一组数据元素的逻辑结构应该包括数据元素本身和数据元素之间的联系。当一组关联的数据元素存储到计算机中时,必然以一种物理的形式组织和存放在计算机存储器中,它应该是这组数据元素的逻辑结构在计算机存储器中的映像,是依赖于计算机的。这种映像是这组数据元素的存储结构,它也能够体现数据元素本身以及数据元素之间的联系。就存储结构本身而言,它不体现任何相关的操作,只是对操作的方式会提出要求并产生影响。当对一组关联的数据元素进行加工处理时,相对应的则是一组相关的操作,这样的一组操作称为施加在这组数据元素之上的运算。运算的定义依赖于数据元素的逻辑结构,而运算的实现则依赖于存储结构,是通过计算机语言完成的,是对数据进行加工处理的方法和动态过程的描述。如果说数据结构这门课程包括了数据的逻辑结构、数据的存储结构和对数据所施加的运算等诸多方面的内容是行得通的。但如果说数据结构包括这 3 方面的内容则显得过于宽泛。数据结构应该是一组数据元素的静态结构的描述,它应该包括逻辑层面和物理层面两个方面。在逻辑层面上而言,是数据和数据之间关系的一种逻辑的描述形式,可以采用文字描述或采用图形方式来表示,也可以用数学的符号形式加以定义;在物理层面上而言,则是数据和数据之间关系在计算机存储器中的体现,同样也是一种静态结构形态。这种静态结构是不可见的,为了便于理解,这种形态也可以用文字描述或图形描述的方式逻辑地加以表示。或者说,数据结构是一组数据元素的全体以及数据元素之间的关系的全体,在逻辑层面上称为数据的逻辑结构,在物理层面上称为数据的存储结构。也可以说数据的存储结构是数据的逻辑结构在计算机存储器中的映像。典型的数据结构有集合结构、线性结构、树形结构和图形结构,它们都有逻辑的表示形式和物理的存储形态。数据的存储又有两种最基本的存储方式,即顺序存储方式和链接存储方式,散列和索引则是两种基本方式的复杂应用。这是为了便于数据的处理而采用的两种不同的存储技术,而不是数据结构的差异。

2.在线性结构中的运用

线性具体的表现形式有好多种,如线性链表、双向链表、堆栈、队列等,但是这些结构都有着共同的特性,它们都是唯一的一个开头的数据元素,也有唯一的一个最后的数据元素等,且除了第一个与最后一个元素外,每个元素都有唯一的前驱与后驱。这使得线性表的结构相对于其他的数据结构比较简单,更容易掌握,所以对于线性结构的使用也是最多的。在线性结构中,一个数据元素的寻找自己的前驱或者后驱有两种方式,这取决于这个线性结构在内存中的存储方式。线性结构在内存中的存储不一定是线性的,比如链表就不是线性的。线性结构的操作主要有三个,分别是插入、删除、修改。如果一个线性结构在内存中的存储也是线性的话,其操作会相对简单些,在C++语言中,可以直接使用C++提供的强大的运算速度处理数据元素,但是相对来讲复杂些,且这种操作手法与使用C语言操作线性结构的手法别无二致。除以上方法外,用户也可以使用C++的各种各样的容器,很多的容器都是各种类型的线性结构,使用这些容器就可以大大的减少操作线性结构的代码。至于C++实现代码究竟用的是内存非线性存储还是线性存储不需要使用者关心,这部分对于C++的使用者来讲是透明的。

如果用户使用的线性结构比较简单且想实现更高的处理速度,可以使用C++强大的指针处理能力。C++语言提供了各种基本数据元素的指针类型,如果用户使用的是自己设计的数据结构,那么C++可以支持用户定义改结构的指针,而且这些指针类型可以相互之间进行转换,这个功能是很多高级语言都不具备的。

3.在树中的运用

树与图都是非线性结构,且树是一种非常重要的数据结构。在自然界中存在着很多的树形结构,为了计算机更好的处理这些数据,所以抽象出了树形结构。树形结构是由众多的节点所构成,有且仅有一个根节点,剩余的节点组成了互不交叉干涉的子集,也叫根的子树,实际编程中用到的树,往往是多层的树,除了最下层的节点外其他的都是一个子树,由于这种抽象的类型很像自然界中的树,所以称之为树形结构。树形结构与线性结构的不同在于树形结构中的节点对应一个前驱,但是往往对应多个后驱,其整体结构并不是顺序的,而是从上往下扩散开的结构,而且树也可以分作多种类型,这些树形结构都有各自的特点,如二叉树、平衡树等,这些树的存储、构建与维护也经常使用不同方法。

对于C++语言来说,所有使用树形结构的要求都能满足。比如树的链接一般是多点链接,而计算机的存储空间是顺序的,所以树在计算机中存储往往不是连续的,必须用到指针,而C++的指针恰恰非常强大。

除了自己手动实现树形结构外,C++同样的有提供相关树的使用函数,这些函数包含了树的构造、树的维护、树的搜索等功能,这些函数的加入使得C++处理树形结构得心应手,既能减少树形结构的实现与维护的复杂程度,也能使用树形结构的种种便利。

4.在图中的运用

图形结构是数据结构中最为复杂的一种结构模型。在线性结构中有且只有一个前驱以及后驱,在树形结构中节点只有一个前驱以及多个后驱,子树之间并无交叉联系,呈现明显的层次感,但是在图形结构中,整个集合中的任意两个数据元素都可以存在着关系,这就造成了复杂的图形结构。

鉴于图形结构千差万别,所以C++语言中没有提供能够直接进行图操作的函数,仅有一些特定的基础操作,对于图形的处理,只能依靠程序编写者具体问题具体分析了。C++在图形数据结构的处理中,有以下的几个优点:

(1)较高的代码效率。虽然C++的运算速度不如C语言与汇编,但是相对于其他的高级语言来讲,已经非常快了,处理复杂问题的图问题是一个很合适的选择。

(2)灵活的指针。C++的指针往往是C++初学者难以运用的功能,但是拥有指针后能施展的能力确实非常强大的,特别是处理离散数据方面具有无可比拟的优势。

(3)严密的逻辑。C++逻辑非常严密,易于编写种种复杂的算法用来处理复杂的图形问题。总的来说,在处理图形结构数据时,C++语言是除了C语言以外的最佳选择。 [科]

【参考文献】

[1]付勇.数据结构的定义及其相关术语[J].电脑编程技巧与维护.2011(10).

[2]张晓孪,王西锋.C++语言编程技术的分析和研究[J].电脑知识与技术.2010(12).

[3]胡云. C++语言与C语言的几点比较[J].河南广播电视大学学报.2007(01).

上一篇:桥梁大体积混凝土承台温控施工技术 下一篇:航道工程管理维护措施分析