数据基本类型,符合数据类型,数据结构的理解,抽象数据结构

来源:互联网 发布:网络安全管理系统软件 编辑:程序博客网 时间:2024/06/08 15:56

基本数据类型是对于指令操作的数据单元来说的。其决定了操作,字节数。这个概念很对编译有用。比如short int x = 2; 则是把数“2”指令中使用2个字节,X也用2个字节的存储。然后 int y = x;汇编代码为:

 Movl $2,%ax # %ax=x.

 Movswl %ax,%ecx #%ecx=y.

y使用4个字节的存储,而且因为x的int关系,决定了操作movswl。

 

结构体等复合数据类型:方便用户设计程序中对数据的处理,对现实世界数据语义的映射。(部分映射,只反映一个实体,对象,对象间关系没有,对于编程来说不重要,反映在程序设计过程中了。面向对象思想)如

struct student {

    int age;

    int scroe;

    String name;

}

表征数据怎么组织,已经是数据结构(格式:信息的组织)了。(当然也和数据类型交叉)

 

数据结构对大量数据单元,包含逻辑结构,存储结构,操作(如栈,队列,图)。这个概念针对程序设计思想提出的。现实世界一些问题的基本模型(区别于复合数据类型,属于结构包含了操作,即问题对象的为行为模式,过程,比如用户的配对队列,用队列数据结构)。


是现实世界,语义关系的一个反应


所以,数据结构,是程序设计用的,基本数据类型,是编译器用的。


2013.6.1

基于这篇文章(http://blog.csdn.net/Cpp_Java_Man/article/details/722569)给出的解释,

广义的数据结构:包括数据的1.逻辑结构,2.存储结构,3.定义在逻辑结构上的操作。

狭义的数据结构:指的是数据的逻辑结构,是信息的组织方式,根据元素的前后趋情况划分。我们在讨论的时候,常用狭义概念,而研究数据结构这么课程的时候,就使用广义的数据结构。

数据的存储结构:4种,见文章(顺序,链,索引{关键字,地址},散列索引)。

定义在逻辑结构上的操作:增、删、改、查(重点)、排序(属于改,重点)的全部或一部分。

抽象数据结构:是数据的逻辑结构及其在逻辑结构上定义的操作。

数据类型:值和操作的集合。基本数据类型的操作由编译器实现了。自定义的抽象数据类型的实现基于基本刷数据类型。

////////////////////////////////////////////////////////////////////////////////////////////

这些概念如何使用??

  • 数据的逻辑结构和抽象数据类型,都是在 概念(或抽象、逻辑)层次描述问题。 软件的设计,总是由

现实的实现—> 概念(抽象、逻辑)层次描述【考虑数据逻辑结构及定义在数据逻辑结构上的操作,即ADT】—> 程序的实现上【考虑存储结构及在此存储结构上操作的实现】。


  • 由上可知,数据结构和数据抽象类型的关系即:数据结构包含了程序的设计及实现过程。而抽象数据类型是数据结构的一部分,指涉及了程序的设计部分。 数据存储结构,基本数据类型涉及了程序的实现部分。

  • 数据类型,抽象数据类型,基本数据类型: 
  1. 基本数据类型的概念符合数据类型(值,操作)。抽象数据类型同样符合数据类型概念。但是抽象数据类型额外涉及了数据逻辑结构,因为对于多个单元数据组成的值集合,集合富含了数据之间的关系,值得表示不能脱离关系的约束。 
  2. 另外,对于操作,数据结构包含了操作的细节(如队列FIFO的插入),而抽象数据结构对操作只要求抽象的,无具体要求(队列即插入)。


  • 过程例如:1.确定问题是什么数据逻辑结构(集合,线性表,树,图)。2.然后确定操作,结合操作特性的一些数据逻辑结构,有了新名字,比如,线性表+先进后出 = 栈。 3.给出ADT描述。 4。结合ADT,基于使用语言的基本数据类型,确定数据的存储结构(考虑各存储结构的优缺点),给出实现。


////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

抽象数据类型(ADT):


抽象数据类型(ADT)的形式化描述,包含了数据逻辑结构的描述及操作的描述(也是函数的要素:输入输出【此处针对抽象数据类型,所以输入输出的数据基本上就是逻辑结构描述的数据,独立函数的话,则看参数及返回值了】,操作执行条件,【通常是要操作的数据具有约束,需要满足约束】,执行后数据状态。).


形式化描述:即具有严格语义及格式的描述形式,数学符号或图或语言(程序设计语言也是,但是太严格,太细节性)。

ADT ADT-Name{
    Data://数据说明
    数据元素之间逻辑关系的描述
    Operations://操作说明
     Operation1://操作1,它通常可用C或C﹢﹢的函数原型来描述
     Input:对输入数据的说明
     Preconditions:执行本操作前系统应满足的状态//可看作初始条件
     Process:对数据执行的操作
     Output:对返回数据的说明
     Postconditions:执行本操作后系统的状态//"系统"可看作某个数据结构


    Operation2://操作2
    ……
  }//ADT

////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

函数设计考虑的一些要素:

1.在无类的语言中,函数的设计通常会将要操作的数据对象作为参数,这样可以扩展函数的通用性。

2.如果输出值的范围是其类型的全集,那么不能放在返回值中返回,否则调用者不能判断函数是否执行失败。


参考文献:

【1】http://blog.csdn.net/Cpp_Java_Man/article/details/722569 (重)

【2】http://blog.csdn.net/wode1366/article/details/8941500


原创粉丝点击