前言
本人是根据bi站王卓老师视频学习并且做了相关笔记希望可以帮助到大家
个人主页:尘觉主页
个人简介:大家好,我是尘觉,希望我的文章可以帮助到大家,您的满意是我的动力
在csdn获奖荣誉: csdn城市之星2名
Java全栈群星计划top前5
端午大礼包获得者
阿里云专家博主
亚马逊DyamoDB结营
欢迎大家:这里是CSDN,我总结知识的地方,欢迎来到我的博客,感谢大家的观看
如果文章有什么需要改进的地方还请大佬不吝赐教 先在次感谢啦
数据(Data)是客观事物的符号表示,是所有能输入到计算机****中并被计算机程序处理的符号的总称(集合)。是信息的载体;是对客观事物的符号化表示;可以被计算机识别、存储和加工。数据不仅仅包含整型、实型等数值类型,还包含图形、图像、声音、视频及动画等非数值类型
对于整型、实型等数值类型,可以进行数值计算;
对于字符数据类型,就需要进行非数值的处理。而声音、图像、视频等其实是可以通过编码的手段变成字符数据来处理的。
数据元素(DataElement)是数据的基本单位,在计算机中通常作为一个整体进行考虑和处理。在有些情况下,数据元素也称为元素、记录、节点、顶点等。如前一节示例中的一名学生记录,树中棋盘的一个格局(状态),以及图中的一个顶点等。
数据项(Data Item)是组成数据元素的、有独立含义的、不可分割的最小单位。例如,学生基本信息表中的学号、姓名、性别等都是数据项。【数据项是“数据的最小单位。但真正讨论问题时,数据元素才是数据结构中建立数据模型的着眼点。就像我们讨论一部电影时,是讨论这部电影角色这样的数据元素”,而不是针对这个角色的姓名或者年龄这样的“数据项”去研究分析。】
说了数据结构中的数据那数据结构中的结构又是什么呢?
结构,简单的理解就是关系,比如分子结构,就是说组成分子的原子之间的排列方式。严格点说,结构是指各个组成部分相互搭配和排列的方式。在现实世界中,不同数据元素之间不是独立的,而是存在特定的关系,我们将这些关系称为结构。那数据结构是什么?
数据结构(Data Structure)**是相互之间存在一种或多种特定关系的数据元素的集合。**换句话说,数据结构是带”结构"的数据元素的集合,“结构”就是指数据元素之间存在的关系。
逻辑结构
数据的逻辑结构是从逻辑关系上描述数据,它与数据的存储无关,是独立于计算机的。因此,数据的逻辑结构可以看作是从具体问题抽象出来的数学模型。数据的逻辑结构有两个要素:一是数据元素;二是关系。
下面四种结构中所举的示例是以某班级学生作为数据对象(数据元素是学生的学籍档案记录),来分别考察数据元素之间的关系。
(1)集合结构
数据元素之间除了“属于同一集合”的关系外,别无其他关系。例如,确定一名学生是否为班级成员,只需将班级看做一个集合结构。
(2)线性结构
数据元素之间存在一对一的关系。例如,将学生信息数据按照其人学报到的时间先后顺序进行排列,将组成一个线性结构。
(3)树结构
数据元素之间存在一对多的关系。例如,在班级的管理体系中,班长管理多个组长,每位组长管理多名组员,从而构成树形结构。
(4)图结构或网状结构
数据元素之间存在多对多的关系。例如,多位同学之间的朋友关系,任何两位同学都可以是朋友,从而构成图状结构或网状结构。
物理结构:数据的逻辑结构在计算机中(内存)的存储形式。分为顺序存储结构、链式存储结构、索引存储结构、散列存储结构。
索引存储结构
现在如银行、医院等地方,设置了排队系统,也就是每个人去了,先领一个号,等着叫号,叫到时去办理业务或看病。在等待的时候,你爱在哪在哪,可以坐着、站着或者走动,甚至出去逛一圈,只要及时回来就行。你关注的是前一个号有没有被叫到,叫到了,下一个就轮到了。
说到数据类型其实我们并不陌生,在使用高级程序设计语言编写程序时,必须对程序中出现的每个变量、常量或表达式、C语言中函数的参数、返回值,明确说明它们所属的数据类型。
C语言中:提供int,char,float,double等基本数据类型;数组、结构、共用体、枚举等构造数据类型;还有指针、空(void)类型,用户也可用typedef自己定义数据类型。而另一些常用的数据结构,如栈、队列、树、图等,不能直接用数据类型来表示。
在C语言中,数据类型可以分为两类:
当年那些设计计算机语言的人,为什么会考虑到数据类型呢?
比如,大家都需要住房子,也都希望房子越大越好。但显然,没有钱,考虑房子是没啥意义的。于是商品房就出现了各种各样的房型,有别墅的,有错层的,有单间的;有一百多平米的,也有几十平米的,甚至在北京还出现了胶囊公寓——只有两平米的房间……这样就满足了不同人的需要。
类型明显或隐含地规定了程序执行期间变量或表达式的取值范围、存储方式以及允许进行的运算。
例如,C语言中定义变量i为int类型,就表示是[min,max]范围的整数,[-32768~32767,16位计算机上]
在这个整数集上可以进行+、-、*、/、%的操作,而不能进行其他数据类型比如字符串的一些操作,而实型变量也有自己的取值范围和相应运算,比如取模运算是不能用于实型变量的。
数据类型是一个值的集合和定义在这个值集上的一组操作的总称。
你在这幅图中看到了什么?相信大多数人会说看到的圆,其实这就是抽象。我们看到了他的本质,而去掉了一些非本质的东西,比如大小颜色,线条的粗细,空心还是实心。
那什么是圆呢?
圆是到某个点距离相等的点的集合这个定点就是圆心,距离就是半径,我们就可以描述这个圆的一些相关信息了
运算:构造圆、求面积、求周长
抽象数据类型(Abstract Data Type, ADT)一般指由用户定义的、表示应用问题的数学模型,以及定义在这个模型上的一组操作的总称,具体包括三部分:数据对象、数据对象上关系的集合以及对数据对象的基本操作的集合。
抽象数据类型可用(D,S,P)三元组表示【离散数学上的概念】其中:
ADT 抽象数据类型名{
数据对象:(数据对象的定义)
数据关系:(数据关系的定义)
基本操作:<基本操作的定义)
}ADT 抽象数据类型名
其中,数据对象和数据关系的定义采用数学符号和自然语言描述,基本操作的定义格式为:
基本操作名(参数表)
初始条件:<初始条件描述>
操作结果:<操作结果描述>
说明
参数表:赋值参数,只为操作提供输入值
要想达到解决问题的目的,就要把抽象的,在计算机上用已有的数据类型进行实现
#include
typedef struct Complex {
/**typedef起别名的。
定义一个整型变量int a;定义一个结构体变量struct[结构体名]结构体变量名;
用 typedef关键字把 struct Complex起了个名字叫complex
**/
float realpart;
float imagepart;
} complex;
complex assign(float real, float image) {//类似于Jaua的构造方法
//构造一个复数
complex c;
c.realpart = real;
c.imagepart = image;
return c;
}
float GetReal(complex C) {//类似于get方法
// 取复数C=x+yi的实部
return C.realpart;
}
float Getimage(complex C) {
//取复数C=x+yi的虚部
return C.imagepart;
}
complex Add(complex C1, complex C2) {
//求两个复数c1和c2的和sum
complex sum;
sum.realpart = C1.realpart + C2.realpart;
sum.imagepart = C1.imagepart + C2.imagepart;
return sum;
}
complex Differ(complex C1, complex C2) {
//求两个复数c1和c2的差difference
complex differ;
differ.realpart = C1.realpart * C2.realpart - C1.imagepart * C2.imagepart;
differ.imagepart = C1.imagepart * C2.realpart + C1.realpart * C2.imagepart;
return differ;
}
int main(void) {
complex c1, c2, c3, c4;
c1 = assign(1.0, 2.0);
c2 = assign(3.0, 4.0);
c3 = Add(c1, c2);
c4 = Differ(c1, c2);
printf("c1+c2的和:%.1f+%.1fi\n", c3.realpart, c3.imagepart);
printf("c1+c2的乘积:%.1f+%.1fi\n", c4.realpart, c4.imagepart);
}
抽象数据类型——复数 抽象数据类型——复数 抽象数据类型——复数
抽象数据类型的概念与面向对象方法的思想是一致的。抽象数据类型独立于具体实现,将数据和操作封装在一起,使得用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,从而实现了信息隐藏。在C++中,我们可以用类的声明表示抽象数据类型,用类的实现来实现抽象数据类型。因此,C++中实现的类相当于数据的存储结构及其在存储结构上实现的对数据的操作
热门专栏推荐
想学习vue的可以看看这个
java基础合集
数据库合集
redis合集
nginx合集
linux合集
手写机制
微服务组件
spring_尘觉
springMVC
mybits
等等等还有许多优秀的合集在主页等着大家的光顾感谢大家的支持
欢迎大家加入我的社区 尘觉社区
文章到这里就结束了,如果有什么疑问的地方请指出,诸佬们一起来评论区一起讨论
希望能和诸佬们一起努力,今后我们一起观看感谢您的阅读
如果帮助到您不妨3连支持一下,创造不易您们的支持是我的动力