数据结构绪论

引言:

《数据结构与算法》这一门课可以理解为承上启下的一门课程。前期我们学习了一种或者多种高级程序设计语言以及离散数学和概率论,这些课程帮助我们对于一些数学模型有初刻认知,帮助我们学习数据结构与算法。后期,我们还会学习《计算机操作系统》、《数据库》等等课程。而《数据结构与算法》是为了后期这些课程做准备。所以,学好数据结构与算法是十分重要的。但是,数据结构与算法具有很多抽象的概念,不利于我们理解,这篇文章将用大白话帮助初学者来理解里面众多的概念与逻辑。欢迎大家评论区指出文中的错误,毕竟本人也是菜鸡一个。

正文:

在计算机早期,用来处理复杂的数学模型,处理的数据都是数字。举例:二元一次方程式、泰勒展开式.......随着,时代的高速发展,计算机处理的数据不再是数字而是像视频、音频等等的非数值数据。举例:学生数据 考试成绩.......

所以,我们在学习之前先搞清楚一些书上的概念,先有一些理论基础。

1.数据,就是符号的集合,包含数值数据(也就是大家容易理解的数字)和非数值数据;

2.数据元素,举例:有一行数据(学生姓名:张三 学号:000000 性别:保密),这一行被称为数据元素;

3.数据项,最小单位。举例:学生姓名就是一个数据项;

数据>数据元素>数据项

4.数据对象,就是具有相同性质的数据元素集合,是数据的子集。举例:学生信息表;

5.数据对象里面的数据元素之间存在某种关系,我们可以简化出其中的数学模型,也称为逻辑模型;

逻辑模型细分为:集合结构、线性结构(有且仅有一个开始与终端结点,每一个结点最多有一个直接前继和直接后继)、树、图;

我们要把数据存储在计算机中进行应用,就要拥有存储结构存储数据;

存储结构有:顺序存储结构、链式存储结构、索引存储结构、散列存储结构。主要的存储结构为前两种;

A.顺序存储结构利用数组的方式存储数据,利用一组连续的空间存储数据;

B.链式存储结构利用指针来存储数据,存储一个数据并且存储下一个数据的地址;

6.有了数据元素的概念介绍,我们直接给出数据结构的概念。

数据结构就是数据元素具有一种或多种关系的集合,结构就是关系,也就是数学模型;

数据结构用来干什么,用来解决非数值数据计算的程序设计中计算机的操作对象以及他们之间的关系和操作的学科。

7.数据类型与抽象数据类型:

数据类型:一些值+在值上的操作;

先对抽象有一个概念了解,百度百科定义为抽象就是将复杂物体的一个或几个特性抽出去,而只注意其他特性的行动或过程 (如头脑只思考树本身的形状或只考虑树叶的 颜色 ,不受它们的大小和形状的限制)。举例:张三、李四两个人有着不同的性格,去除非本质的东西,抽象为人。在数据结构中我们把非数值的数据抽象为具有相同数学模型的类型。

抽象数据类型:数学模型+操作;

8.抽象数据类型的形式定义(也就是用语言进行简单描述):

ADT 抽象数据类型名{

A.数据对象

B.数据关系

C.操作

}ADT 抽象数据类型名

以上三点为抽象数据类型的形式定义;

具体化,abstract data type(抽象数据类型的英文名)。利用我们高级程序设计语言已有的数据类型表示抽象数据类型和描述他们的存储结构,用函数来表示操作。

在这里我们使用C语言高级程序设计语言来进行编写:

//C语言具体化抽象数据类型,举例:实现复数的定义
#include <stdio.h>
//利用自定义结构体来实现复数的定义
typedef struct Complex{
	double realmath;//定义一个double型的实数
	double imaginamath;//定义一个double的虚部

}Complex;//数据类型名为Complex
Complex Add(Complex x, Complex y){
	double realmath;
	double imaginamath;
	realmath = x.realmath + y.realmath;
	imaginamath = x.imaginamath + y.imaginamath;
	Complex z = { realmath, imaginamath };
	return z;
	
}
int main(){
	Complex a = { 2.1, 1.2 };
	Complex b = { 3.1, 1.3 };
	Complex z;
	z=Add(a, b);
    //利用函数实现操作,实现一个复数相加的操作
	printf("实部: %lf\n", z.realmath);
	printf("虚部: %lf\n", z.imaginamath);
	
}

大家下来也可以使用VS进行减法、乘法等等运算,熟悉一下结构体与函数的使用。

这是对以上内容的构图;

OK,最后让我们了解最后一个概念,算法。

算法就是对一个问题有限的指令,其中一个指令可以包含一个或多个操作,也就是解题过程。

算法有三个描述形式:

A.使用自然语言描述,举例老师上课让你上讲台讲一下你的解题思路;

B.流程图描述;

C.高级程序设计语言编写;

我们区分一下程序与算法之间的联系与不同,程序=数据结构+算法; 

算法要具有:有穷性、确定性、可行性、输入、输出五个特性;

算法具有的要求有:正确性、可读性、健壮性、高效性

算法具有好与坏之分,区分方式看其时间复杂度与空间复杂度

以上就是对于数据结构与算法的简单概念的介绍,目的是为了大家掌握常见的概念,区分一下相似的定义。后续文章将为大家细讲一下不同的数据结构。

https://www.bilibili.com/video/BV1q54y1q79w?p=26//结构体内容的讲解

https://www.bilibili.com/video/BV1nJ411V7bd?spm_id_from=333.999.0.0//数据结构与算法绪论的讲解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

太原理工大学课设

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值