个人笔记——数据结构(其二)

二、数据类型和抽象数据类型

1、数据类型(data type):指一组性质相同的值的集合和定义在此集合上的一组操作的总称,是某种程序设计语言中已经实现的数据结构。

注:c/c++语言中常用的数据类型是按照取值的不同分为原子类型和结构类型,原子类型指不可再分解的基本类型;结构类型指由若干个数据类型组合而成的,可以再分解的,例如数组、结构体等。

以下是c/c++中常见的数据类型:

_1、基本数据类型:int型,float型,double型和char型。int有三个修饰符,short(短整数),long(长整数)和unsigned(无符号整数)。

注:c++中bool(布尔)型,是C++新增的一种基本数据类型。

名称 应用环境 类型 长度 取值
bool 标准的C++ 布尔型 1个字节 false和true(0和1的区别)

数据类型是用来定义变量的,如下:

int n=10;                /*在执行该语句时,系统自动为变量n在计算机存储器中分配一个固定长度(int类型一般是4个字节或2个字节,主要看操作系统,和编译器有关,一个int的大小是操作系统的一个字长 TC是16位系统程序,所以int是16bit,也就是两个字节 在32位linux和32位或64位的Windows下,都是4个字节)的存储空间,我们可以通过变量名n对这个存储空间进行存储操作,当超出作用范围时系统自动释放该内存空间,所以称之为自动变量(automatic variable)。*/

_2、指针类型:

直接对存放变量的地址进行操作。如下:

int i,*p;                //其中,i是整形变量,p是指针变量(用于存放某个整形变量的地址)。
                         //表达式&i表示变量i的地址,将p指向整型变量i的运算为p=&i。
//对于指针变量p来说,表达式*p是取p所指变量的值。如下:
int i=2,*p=&i;
cout<<" "<<*p<

上述语句执行后,其内存结构如下图,通过*p输出变量i的值,即2。

个人笔记——数据结构(其二)_第1张图片

_3、数组类型:数组是同一数据类型的一组数据元素的集合。在c/c++语言中,定义数组需要指定数组的长度,即数组中可存放的最多元素个数。数组名用于标识一个数组,下标指示一个数组元素在该数组中的位置。

数组下标的最小值称为下界,在c/c++中总是0.数组下标的最大值称为上界,在c/c++中数组上界为数组的大小减一。例如int a[10]定义了一个包含10个整数的数组a,数组元素为a[0]~a[9]。

_4、结构体类型:结构体类型是一组被称为结构体成员的数据项组成的每个结构体成员都有自己的标识符(数据域),一个结构体类型中所有成员的数据类型可以不相同

struct Teacher//教师结构体类型
{   int number;//成员编号,占4字节 
    char name[8];//成员姓名,占8字节
    int age;//成员年龄,占4字节
}
//以下语句定义了结构体类型Teacher的一个结构体变量t并赋值:
struct Teacher t;
t.number=88;
strcpy(t.name,"大伟哥");
t.age=44;

结构体变量t在内存中的存放方式如图

个人笔记——数据结构(其二)_第2张图片

引用number成员的方式是t.number,引用name成员的方式是t.name,引用age成员的方式是t.age,所有成员相邻存放。t变量所分配到的内存空间大小为所有成员占用的内存空间之和。

_5、共用体结构:共用体是把不同的成员组织为一个整体,它们在内存中共享一段存储单元,但不同成员以不同的方式被解释。

//声明一个共用体类型Tim
union Tim
{   short int n;//成员n,占用2字节 
    char ch[2];//成员ch数组,占2字节
}
//以下语句是定义一个共用体类型Tim的一个共用体变量u并赋值
union Tim u;
u.n=0x404;//若为“u=0x404”这种直接赋值是错误的

_6、自定义类型:指使用typedef关键字来指定一个新的数据类型名

2.存储空间的分配

存储空间的分配主要有两种方式:1)静态存储空间分配方式,2)动态存储空间分配方式

(该部分可以跳转其他专业性强的博客,本文不做过多描述)

3.抽象数据类型(abstract data type,ADT):指用户进行软件系统设计时从问题的数据模型中抽象出来的逻辑数据结构和逻辑数据结构上的运算,而不考虑计算机的具体存储结构和运算的具体实现算法。    抽象数据类型中的数据运算的声明与数据对象的表示和数据运算的实现相互分离。

一个抽象数据类型可以用三元组(D,R,P)来表示,其中D是数据对象,R是D上的关系集,P是D中数据运算的基本运算集。抽象数据类型的基本描述格式如下(伪代码)

ADT 抽象数据类型名
{   数据对象:数据对象的声明 
    数据关系:数据关系的声明
    基本运算:基本运算的声明
}
//其中运算的声明格式为:
基本运算名(参数表):运算功能描述

抽象数据类型有两个重要特征:数据抽象和数据封装。(所谓数据抽象是用ADT描述程序处理的数据的特征、其所能完成的功能以及它和外部用户的接口。所谓的数据封装是指将程序的外部特性和其内部实现细节分离,并对外部用户隐藏其内部实现细节。)

你可能感兴趣的:(笔记,数据结构)