在计算机硬件层面,所有被存储和处理的数据最终都被编码为二进制代码
集合结构:其元素之间没有需要关注的明确关系,也就是说关系R是空集,这样的数据结构就是元素的集合。
只是把一组数据元素包装为一个整体。这就是最简单的一类数据结构。
序列结构: 又可称为线性结构,其数据元素之间有一种明确的先后关系,除最后一个外都有后继元素。
层次结构:数据元素分属于不同的层次,一个上层元素可以关联着一个或者多个下层元素。
树形结构:最简单的就是树形关系,只有一个根其余元素都是跟的直接或者间接的下层关系,只有一个且仅有一个上层元素与之相连。
团行结构:元素与元素之间可以有任意复杂的相互联系。
在程序中使用一个数据结构,需要把这种结构映射到编程语言提供的基本数据机制,或者说是用编程语言的数据机制实现所需的数据结构。这种映射成为数据结构的物理实现。
简单说就是数据结构每种语言都有不同的数据结构,数据结构就相当于一个类实例化不同的对象,如Python java等。
支持元素存储和访问的数据结构被称为容器。
设计的功能性数据结构包括栈、队列、优先队列、字典等
计算机读取数据时是直接读取内存的,如果数据保存在了硬盘(外存)上,首先应从硬盘拷贝到内存再进行读取操作。
一个单元可以保存一个字节(8位二进制代码)的数据,64位计算机 一次可以读取8个字节的数据
访问内存的操作又称为I/O.
访问的是组合对象如列表、元组、多个数据时,多个袁术被存放在一块连续的内存区域里,给每个元素的顺序编号称为index下标。
连续结构或链接结构是所有数据结构构造的基础
块里的数据指向关联关系,关联是单向的,也称为链接或引用。
变量是内存地址的抽象、Python变量都是对象,Python实现的这种方式称为变量的引用语义,例如a=1,a指向了1,如果b也等于1,那么b的id值和a的相同,均指向了同一块内存地址。
直接把值存在变量的存储区里称之为值语义。
不可变对象是创建之后 再进行除读取之外的操作改变内存地址
可变对象:创建之后,可以改变内存地址。
数组:长度是固定的
数组里的元素类型是一样的
数字是怎样存储的?
一个整数32位系统里 占4个字节
32根线:最大2**32次方-1,最小-2**32次方
4*1024*1024*1024
一个格子是一个字节
32位系统只能支持4个G的内存。
64位系统:2**64位-1
深度优先用栈:一条道走到黑
广度优先用队列:几个方向都看着,