一、什么是数据结构
结构:实体+关系
数据结构:
1、按照逻辑关系组织起来的一批路径
2、按一定存储方法把他存储在计算机中
3、在这些数据上定义了一个运算的集合
二、数据结构的逻辑结构
线性结构
线性表(表、栈、队列、串等)
非线性结构
树(二叉树、Huffman树、二叉检索树等)
扫描二维码关注公众号,回复:
5800158 查看本文章
图(有向图、无向图等)
三、数据的存储结构
四类:顺序、链接、索引、散列
1、顺序:存储单元的顺序地址,例如数组
2、链接:指针的地址指向关系,如链表
3、索引:对数据建立一个索引的表,然后通过这个表能够有效的找到相应的数据存储地址
4、散列:一种特殊的索引结构,散列能通过对要查的关键码的一个映射,能够在整个散列表里面快速地找到它的存储空间,然后把相应的数值找出来。
抽象数据类型ADT(Abstract Data Type)
-定义了一组运算的数学模型
-与物理存储结构无关
-使软件系统建立在数据之上
抽象数据结构二元组
<数据对象D,数据操作P>
先定义逻辑结构,在定义运算
逻辑结构:数据对象及其操作
运算:数据操作
例:栈的抽象数据类型ADT
逻辑结构:线性表
操作特点:限制访问端口
-只允许在进行插入、删除操作
-入栈(push)、出栈(pop)、取栈顶(top)、判栈空(isEmpty)
template<class T> //栈的元素类型为T class Stack{ public: //栈的运算集 void clear(); //变为空栈 bool push(const T item); //item入栈,成功返回真,否则返回假 bool pop(T & item); //弹栈顶,成功返回真,否则返回假 bool top(T& item); //读栈顶但不弹出,成功真,否则假 bool isEmpty; //若栈已空返回真 bool isFull(); //若栈已满返回真 }