文章目录
- 前言
- 一、数据与数据结构
- 1.数据
- 2.数据结构
- 二、算法是什么?
- 三、线性表
- 1.定义
- 2.特点
- 总结
前言
T_T此专栏用于记录数据结构及算法的(痛苦)学习历程,便于日后复习(这种事情不要啊)
一、数据与数据结构
1.数据
数据的定义:太抽象了,几乎所有信息都可以叫数据。(我哭死)
数据元素是数据的基本单位,在程序中常作为一个整体进行考虑和处理,也称为元素或记录、节点和顶点。构成数据元素的最小单位是数据项。例如学生包含姓名学号等等,全部学生构成一个数据,单个学生是一个数据元素,单个学生的姓名则是数据元素的数据项。
数据对象:指具有相同性质的数据元素的集合,是数据的一个子集。例如所有男生是所有学生的一个子集。
2.数据结构
数据结构:指相互之间存在一种或多种特定关系的数据元素的集合,包括数据的逻辑结构、数据的物理结构和对数据的操作。
逻辑结构:即指数据的逻辑关系,例如a=b。逻辑结构可分为线性结构和非线性结构。
线性结构:有且仅有一个节点只有后继节点(开始节点),有且仅有一个节点只有前驱节点(终端节点),并且所有其余节点仅有一个前驱和一个后继节点。想象一些人在玩老鹰抓小鸡,小鸡一方第一个即为开始节点,最后一个即为终端节点。(老鹰老鹰别吃我T~T)常见线性结构有:线性表、栈、队列和串。(这些是什么?我现在也不知道?_?)
非线性结构:一个节点可能有多个前驱或后继节点。例如一人脚踏两只船??常见的非线性结构有:树、图。
逻辑结构亦可分为四大逻辑结构:
集合结构:数据元素之间除了同属一个集合外,互相无其他关系。
线性结构:数据元素之间是一对一的,如大头儿子对小头爸爸。
树形结构:数据元素之间是一对多的关系,如一个父亲两个孩子。
图形/网形结构:数据元素之间是多对多的关系。
由此可知,集合、树形、网形结构均为非线性结构。
物理结构:即数据的存储方式。物理结构分为顺序存储结构和链式存储结构。
顺序存储结构:即给分配一段连续的空间存储数据,例如数组。
链式存储结构:数据在空间中的存储位置并非连续,而是呈现满天飞的形式。数据间通过一条无形的链连接起来,即指针。从而,使用链式存储结构的数据域,同时应具有对应的指针域,数据域存放数据,指针域指示其后继的信息。
二、算法是什么?
算法指用于解决某个问题所采取的方法。(通俗的来说)例如计算从1加到100,你可以选择逐一个数字加起来,或者选择(1+100)*100/2。显然,后者效率更高。用专业术语来说,后者算法时间复杂度为O(1),而前者为O(n)。(什么是时间复杂度?嗯。。。看看其他博主的吧)
算法的五个基本特征:输入、输出、有穷性、确定性和可行性。
三、线性表
1.定义
线性表:由0个或多个数据元素组成的有限序列。
2.特点
1.线性表是一个序列,也就是说数据元素存在先来后到的关系。好比一个数列,a0总是第一个出现。
2.满足线性结构要求。
3.线性表中数据元素个数定义为线性表的长度。如果表中无元素,则为空表。
我们常用的一维数组就是一个线性表。
总结
路漫漫其修远兮,吾将上下而开摆。
有任何疑问和补充,欢迎交流。(但我显然不会)