数据结构学习笔记——数据类型和抽象数据类型

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

1.自动变量,就是我们C中类似"int c = 4;",c这样得的变量,在超出其作用范围时会自动释放其内存空间。
2.指针类型。
3.数组类型。
4.结构体类型。

结构体定义方式
struct Teacher
{	int no;
	char name[8];
	int age;
};
结构体赋值方式。
在定义结构体,并定义一个结构体变量之后,可以通过”结构体.成员“来赋值。
struct Teacher t;
t.no = 85;
t.name = "张敏";
t.age = 42;
#或者是
char Name[2] = {"张敏"};
strcpy(t.name,Name);
#strcpy() 把后者所指向的内存空间里面的字符串赋值到前者所指的内存空间里面。

t变量所分配的内存空间大小为所有成员占用的内存空间之和。

结构体在内存中的存放方式。
在这里插入图片描述
由图可知结构体的成员是紧挨着存储的,写入或调用的时候使用“t.no”的形式调用。

共用体类型:
共用体类型也是一个形式上类似结构体的东西,它有成员,但是呢,它的成员不是单独拥有一块存储空间的,而是所有成员都共同拥有一个存储空间,为了防止成员所拥有的空间不会过小,就把这个共同拥有的存储空间的大小设置为占用存储空间最大的成员占用的空间。

共用体定义方法如下:
union Tag
{	short int n; //成员n,占用两个字节。
	char ch[2];  //成员ch,占用两个字节。
	char b;      //成员b,占用一个字节,但是高位的那个存储空间不占用,
				//因为b的类型是char,只能够占用一个字节的存储空间。
};
共用体赋值方式如下:
typedef union Tag test;	//typedef 给函数起一个外号。
test u;
u.n = 0x4142;
#output
printf("n = %x", u.n);
n = 4142
printf("b = %c",u.b);
b = B #为什么是这个结果我也不知道,欢迎大家指正。

2.抽象数据类型:
Abstract Data Type ,简称ADT
是指从程序设计问题的数学模型中抽象出来的数据逻辑结构和数据逻辑结构上的运算。

抽象数据类型的基本描述格式如下:
ADT 抽象数据类型名
{	数据对象:数据对象的声明
	数据关系:数据关系的声明
	基本运算:基本运算的声明

其中,基本运算的声明格式为:
基本运算名(参数表):运算功能描述
基本运算有两种参数,其中值参数只为运算提供输入值,引用参数以&开头,除了可提供输入值以外,还将返回运算结果。

例如一个复数的抽象数据类型定义如下:
ADT Complex
{	数据对象:D = {a,b | a,b都是实数}
	数据关系:R = {<a,b> | a在复数中是实部,b在复数中是虚部}
	基本运算:
		Sum(&x1,&y1,x2,y2):复数加法,&x1,&y1,x2,y2分别为两个复数的实部和虚部。
		Subtract(&x1,&y1,x2,y2):复数减法,&x1,&y1,x2,y2分别为两个复数的实部和虚部。
值得一提的是两个基本运算中的引用变量的作用原理,在C++中,&x称为引用变量,
用一个变量b给它赋值的时候,它会和赋值变量b共用一个存储空间,当b的值变成q,
x的值也会是q,同样的,当x被赋值为p时,b也会是p。
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值