论文部分内容阅读
摘要:数据结构是面向过程编程中的一个重要概念,即使在面向对象编程中也具有重要的地位,因为面对繁多而复杂的待处理数据,如果没有数据结构将数据组织起来,那么程序的编写将变得极为艰难。而数据结构虽好,但终究是思想,它还需要一个实现的途径,所以在整个程序编写的过程中,数据结构为编程中的法,而使用的语言就是编程中的术。在该文中将试析一个强大的术——C 语言如何在数据结构中的运用,如何发挥出数据结构更好的效果。
关键词:C ;数据结构;计算机语言
中图分类号:TP274文献标识码:A文章编号:1009-3044(2012)09-2139-02
C 语言是从C语言继承而来,并从C语言的基础上增加了很多新的特性以适应新的技术要求。应该说C 是一个庞大的功能强悍的一种语言,它既可以完成与C语言一样的面向过程编程也可以完成面向对象编程。在面向过程编程中,C 也同样完成了对C语言的扩展,增加了很多的库与函数,这些库与函数的存在赋予了C 在数据结构的运用中超过C语言的能力。可以说,C 在数据结构中的运用灵活程度与使用方法超过了C语言。
在数据与数据之间存在着各种各样的关系,这些关系称之为结构,而数据结构就是数据元素之间特定关系的集合。数据结构可以分为很多部分,但是基本结构主要有四种,这四种分别是:集合、线性结构、树形结构、图状结构。这四种基本的四类结构相互复合便可以组成成千上万中不同的数据结构。该文主要探讨C 语言对于一些常见结构的运用,也就相当于从底层讲述C 在数据结构中的运用。
1在线性结构中的运用
线性具体的表现形式有好多种,如线性链表、双向链表、堆栈、队列等,但是这些结构都有着共同的特性,它们都是唯一的一个开头的数据元素,也有唯一的一个最后的数据元素等,且除了第一个与最后一个元素外,每个元素都有唯一的前驱与后驱。这使得线性表的结构相对于其他的数据结构比较简单,更容易掌握,所以对于线性结构的使用也是最多的。
在线性结构中,一个数据元素的寻找自己的前驱或者后驱有两种方式,这取决于这个线性结构在内存中的存储方式。线性结构在内存中的存储不一定是线性的,比如链表就不是线性的。线性结构的操作主要有三个,分别是插入、删除、修改。
如果一个线性结构在内存中的存储也是线性的话,其操作会相对简单些,在C 语言中,可以直接使用C 提供的强大的运算速度处理数据元素,但是相对来讲复杂些,且这种操作手法与使用C语言操作线性结构的手法别无二致。除以上方法外,用户也可以使用C 的各种各样的容器,很多的容器都是各种类型的线性结构,使用这些容器就可以大大的减少操作线性结构的代码。至于C 实现代码究竟用的是内存非线性存储还是线性存储不需要使用者关心,这部分对于C 的使用者来讲是透明的。
如果用户使用的线性结构比较简单且想实现更高的处理速度,可以使用C 强大的指针处理能力。C 语言提供了各种基本数据元素的指针类型,如果用户使用的是自己设计的数据结构,那么C 可以支持用户定义改结构的指针,而且这些指针类型可以相互之间进行转换,这个功能是很多高级语言都不具备的。
2在树中的运用
树与图都是非线性结构,且树是一种非常重要的数据结构。在自然界中存在着很多的树形结构,为了计算机更好的处理这些数据,所以抽象出了树形结构。
树形结构是由众多的节点所构成,有且仅有一个根节点,剩余的节点组成了互不交叉干涉的子集,也叫根的子树,实际编程中用到的树,往往是多层的树,除了最下层的节点外其他的都是一个子树,由于这种抽象的类型很像自然界中的树,所以称之为树形结构。树形结构与线性结构的不同在于树形结构中的节点对应一个前驱,但是往往对应多个后驱,其整体结构并不是顺序的,而是从上往下扩散开的结构,而且树也可以分作多种类型,这些树形结构都有各自的特点,如二叉树、平衡树等,这些树的存储、构建与维护也经常使用不同方法。
对于C 语言来说,所有使用树形结构的要求都能满足。比如树的链接一般是多点链接,而计算机的存储空间是顺序的,所以树在计算机中存储往往不是连续的,必须用到指针,而C 的指针恰恰非常强大。
除了自己手动实现树形结构外,C 同样的有提供相关树的使用函数,这些函数包含了树的构造、树的维护、树的搜索等功能,这些函数的加入使得C 处理树形结构得心应手,既能减少树形结构的实现与维护的复杂程度,也能使用树形结构的种种便利。
3在图中的运用
图形结构是数据结构中最为复杂的一种结构模型。在线性结构中有且只有一个前驱以及后驱,在树形结构中节点只有一个前驱以及多个后驱,子树之间并无交叉联系,呈现明显的层次感,但是在图形结构中,整个集合中的任意两个数据元素都可以存在着关系,这就造成了复杂的图形结构。
鉴于图形结构千差万别,所以C 语言中没有提供能够直接进行图操作的函数,仅有一些特定的基础操作,对于图形的处理,只能依靠程序编写者具体问题具体分析了。C 在图形数据结构的处理中,有以下的几个优点:
1)较高的代码效率。虽然C 的运算速度不如C语言与汇编,但是相对于其他的高级语言来讲,已经非常快了,处理复杂问题的图问题是一个很合适的选择。
2)灵活的指针。C 的指针往往是C 初学者难以运用的功能,但是拥有指针后能施展的能力确实非常强大的,特别是处理离散数据方面具有无可比拟的优势。
3)严密的逻辑。C 逻辑非常严密,易于编写种种复杂的算法用来处理复杂的图形问题。
总的来说,在处理图形结构数据时,C 语言是除了C语言以外的最佳选择。
参考文献:
[1]崔玲玲.浅谈数据结构学习方法[J].电脑知识与技术,2005(9).
[2]付勇.数据结构的定义及其相关术语[J].电脑编程技巧与维护,2011(5).
[3]胡云.C 语言与C语言的几点比较[J].河南广播电视大学学报,2007(4).
[4]张晓孪,王西锋.C 语言编程技术的分析于研究[J].电脑知识与技术,2010(4).
关键词:C ;数据结构;计算机语言
中图分类号:TP274文献标识码:A文章编号:1009-3044(2012)09-2139-02
C 语言是从C语言继承而来,并从C语言的基础上增加了很多新的特性以适应新的技术要求。应该说C 是一个庞大的功能强悍的一种语言,它既可以完成与C语言一样的面向过程编程也可以完成面向对象编程。在面向过程编程中,C 也同样完成了对C语言的扩展,增加了很多的库与函数,这些库与函数的存在赋予了C 在数据结构的运用中超过C语言的能力。可以说,C 在数据结构中的运用灵活程度与使用方法超过了C语言。
在数据与数据之间存在着各种各样的关系,这些关系称之为结构,而数据结构就是数据元素之间特定关系的集合。数据结构可以分为很多部分,但是基本结构主要有四种,这四种分别是:集合、线性结构、树形结构、图状结构。这四种基本的四类结构相互复合便可以组成成千上万中不同的数据结构。该文主要探讨C 语言对于一些常见结构的运用,也就相当于从底层讲述C 在数据结构中的运用。
1在线性结构中的运用
线性具体的表现形式有好多种,如线性链表、双向链表、堆栈、队列等,但是这些结构都有着共同的特性,它们都是唯一的一个开头的数据元素,也有唯一的一个最后的数据元素等,且除了第一个与最后一个元素外,每个元素都有唯一的前驱与后驱。这使得线性表的结构相对于其他的数据结构比较简单,更容易掌握,所以对于线性结构的使用也是最多的。
在线性结构中,一个数据元素的寻找自己的前驱或者后驱有两种方式,这取决于这个线性结构在内存中的存储方式。线性结构在内存中的存储不一定是线性的,比如链表就不是线性的。线性结构的操作主要有三个,分别是插入、删除、修改。
如果一个线性结构在内存中的存储也是线性的话,其操作会相对简单些,在C 语言中,可以直接使用C 提供的强大的运算速度处理数据元素,但是相对来讲复杂些,且这种操作手法与使用C语言操作线性结构的手法别无二致。除以上方法外,用户也可以使用C 的各种各样的容器,很多的容器都是各种类型的线性结构,使用这些容器就可以大大的减少操作线性结构的代码。至于C 实现代码究竟用的是内存非线性存储还是线性存储不需要使用者关心,这部分对于C 的使用者来讲是透明的。
如果用户使用的线性结构比较简单且想实现更高的处理速度,可以使用C 强大的指针处理能力。C 语言提供了各种基本数据元素的指针类型,如果用户使用的是自己设计的数据结构,那么C 可以支持用户定义改结构的指针,而且这些指针类型可以相互之间进行转换,这个功能是很多高级语言都不具备的。
2在树中的运用
树与图都是非线性结构,且树是一种非常重要的数据结构。在自然界中存在着很多的树形结构,为了计算机更好的处理这些数据,所以抽象出了树形结构。
树形结构是由众多的节点所构成,有且仅有一个根节点,剩余的节点组成了互不交叉干涉的子集,也叫根的子树,实际编程中用到的树,往往是多层的树,除了最下层的节点外其他的都是一个子树,由于这种抽象的类型很像自然界中的树,所以称之为树形结构。树形结构与线性结构的不同在于树形结构中的节点对应一个前驱,但是往往对应多个后驱,其整体结构并不是顺序的,而是从上往下扩散开的结构,而且树也可以分作多种类型,这些树形结构都有各自的特点,如二叉树、平衡树等,这些树的存储、构建与维护也经常使用不同方法。
对于C 语言来说,所有使用树形结构的要求都能满足。比如树的链接一般是多点链接,而计算机的存储空间是顺序的,所以树在计算机中存储往往不是连续的,必须用到指针,而C 的指针恰恰非常强大。
除了自己手动实现树形结构外,C 同样的有提供相关树的使用函数,这些函数包含了树的构造、树的维护、树的搜索等功能,这些函数的加入使得C 处理树形结构得心应手,既能减少树形结构的实现与维护的复杂程度,也能使用树形结构的种种便利。
3在图中的运用
图形结构是数据结构中最为复杂的一种结构模型。在线性结构中有且只有一个前驱以及后驱,在树形结构中节点只有一个前驱以及多个后驱,子树之间并无交叉联系,呈现明显的层次感,但是在图形结构中,整个集合中的任意两个数据元素都可以存在着关系,这就造成了复杂的图形结构。
鉴于图形结构千差万别,所以C 语言中没有提供能够直接进行图操作的函数,仅有一些特定的基础操作,对于图形的处理,只能依靠程序编写者具体问题具体分析了。C 在图形数据结构的处理中,有以下的几个优点:
1)较高的代码效率。虽然C 的运算速度不如C语言与汇编,但是相对于其他的高级语言来讲,已经非常快了,处理复杂问题的图问题是一个很合适的选择。
2)灵活的指针。C 的指针往往是C 初学者难以运用的功能,但是拥有指针后能施展的能力确实非常强大的,特别是处理离散数据方面具有无可比拟的优势。
3)严密的逻辑。C 逻辑非常严密,易于编写种种复杂的算法用来处理复杂的图形问题。
总的来说,在处理图形结构数据时,C 语言是除了C语言以外的最佳选择。
参考文献:
[1]崔玲玲.浅谈数据结构学习方法[J].电脑知识与技术,2005(9).
[2]付勇.数据结构的定义及其相关术语[J].电脑编程技巧与维护,2011(5).
[3]胡云.C 语言与C语言的几点比较[J].河南广播电视大学学报,2007(4).
[4]张晓孪,王西锋.C 语言编程技术的分析于研究[J].电脑知识与技术,2010(4).