数据结构总结

来源:互联网 发布:人工智能学什么专业 编辑:程序博客网 时间:2024/06/05 16:01

1.数据是信息的载体,在计算机科学中是指所有能输入到计算中并能被计算机程序识别和处理的符合集合。

2.数据元素是数据的基本单位,构成数据元素的不可分割最小单位称为数据项。

3.数据结构是指相互之间存在已定关系的数据元素的集合。

4.根据数据元素之间逻辑关系的不同,数据结构可分为四类:①集合:数据元素之间就是“属于同一个集合”,除此之外没有任何关系。②线性结构:数据元素之间存在一对一的线性关系。③树结构:数据元素之间存在一对多的层次关系。④图结构:数据元素之间存在多对多的任意关系。

5.数据的存储结构通常有两种:①:顺序存储:用一组连续储单元依次存储数据元素,数据元素之间的逻辑关系由元素的存储位置来表示。②链接存储:用一组任意的存储单元存储数据元素。

6.算法必须满足五个重要特性:输入、输出、有穷性、确定性、可行性。一个“好”算法首先要满足算法的五大特性,还要具备正确性、鲁棒性、简单性、抽象分级、高效性。

7.线性表:是N(N>=0)个具有相同类型的数据元素的有限序列。

8.顺序表的按位查找时间复杂度O(1),按值查找时间复杂度O(n),插入时间复杂度O(n),删除时间复杂度O(n),遍历时间复杂度O(n)。缺点:插入和删除操作需要移动大量元素,等概论情况下要移动一般的元素;表的容量难以确定;造成存储空间的“碎片”。

9.单链表:是用任意的存储单元存放线性表的元素,可以连续也可以不连续。[data][next]data是数据域,用来存放数据元素;next是指针域,用来存放该节点的后继节点的地址。遍历时间复杂度O(n),查找时间复杂度O(n);插入时间复杂度O(n),删除时间复杂度O(n),

10.双链表:[prior][data][next] data:为数据域,存放数据元素;prior:为前驱指针域,存放该节点的前驱节点的地址;next:为后继指针域,存放该节点的后继节点的地址。插入操作:①s->prior = p;②s->next = p->next;③p->next->prior = s;④p->next = s;删除操作:①(p->prior)->next = p->next;②(p->next)->prior = p->prior;

11.静态链表:用数组来表示单链表,用数组元素的下标来模拟单链表的指针。data域放数据元素,next域存放该元素的后继元素所在的数组下标。 插入和删除操作,只需要修改游,不需要移动表中的元素,从而改进了在顺序表中插入和删除操作需要移动大量元素的缺点,但并没有解决连续存储分配带来的表长难以确定的问题。

12.间接寻址:将数组和指针结合起来的一种方法,它将数组中存储的元素的单元改为存储指向该元素的指针。间接寻址保持了顺序表随机存储的优点,同时改进了插入和删除操作的时间性能,但是没有解决连续分配带来的表长的问题。

13.栈:仅在表尾进行插入和删除操作的线性表,允许插入和删除的一端称为栈顶,另一端称为栈底。。栈是先进后出。

14.队列:只允许在一端进行插入操作,在另一端进行删除操作的线性表。允许插入的一端叫队尾。允许删除的一端称为队头。队列是先进先出。循环队列相关条件和公式(队尾指针是rear,队头是front,QueueSize是循环队列的最大长度):1.队空条件:rear==front;2.队满条件(rear+1)%QueueSize==front;3.计算队列长度:(rear-front+QueueSize)%QueueSize;4.入队:(rear+1)QueueSize;5.出队:(front+1)%QueueSize。

15.中缀表达式:①运算符的优先级从高到低依次为()、*、/、+、-#;②有括号出现时先算括号内的。后算括号外的,多层括号由内向外进行。后缀表达式:所有的计算按运算符出现的顺序从左向右进行,不再考虑运算符的优先级。

16.树:某节点拥有子树的个数称为该节点的度;树中节点最大的值称为该树的度。度为0的节点称为叶子节点;反之该节点称其为孩子节点的双亲节点。某节点子树的根节点称为该节点的孩子节点;反之该节点称为其孩子的双亲节点;具有同一个双亲的节点称为兄弟节点。如果树的节点序列n1,n2......nk满足:节点ni是节点ni+1的双亲(1<=i<k)则把n1,n2,....nk称为一条由n1至nk的路径;路径上通过的边数称为路径长度。规定根节点的层数为1;若某其余任何节点,在k层,则其孩子节点在k+1层;树中所以节点的最大层称为树的(深度)高度。如果一颗树中的格子数从左到右是有次序的称为有序树,无序则称为无序树。

17.树的遍历:前序遍历:根左右;中序遍历:左右根;后序遍历:左右根。

18.满二叉树:如果所有分支节点都存在左子树和右子树,并且所有叶子都在同一层上。①叶子只能出现在最下一层。②只有度为0或度为2的节点。

20.完全二叉树:对一颗具有n各节点的二叉树按层序编号,如果编号为i(1<=i<=n)的节点与同样深度的满二叉树中编号为i的节点在二叉树中的位置完全相同。满二叉树已定是完全二叉树。①叶子节点只能出现在最下两层,且最下层的叶子节点都集中在二叉树最左侧连续的位置②如果有度为1的节点,只能有一个,且该节点只要左孩子。

21.二叉树的基本性质:①二叉树的第i层上最多有2^i-1的节点(i>=1);②深度为k的二叉树中,最多有(2^k ) -1个节点,最少有k个节点;③二叉树中,如果叶子节点的个数为n;度为2的节点的个数为n1,则n=n1+1;④具有n个节点的完全二叉树的深度为(LogN)+1(底为2);⑤一棵具有n个节点的完全二叉树中的节点从1开始按层序编号,则对任意编号为i(1<=i<=n)的节点:如果i>1,则节点i的双亲的编号为i/2;否则节点i是根节点,无双亲;如果2i<=n;则节点i的左孩子的编号为2i;否则节点无左孩子;如果2i+1<=n;则节点i的右孩子编号为2i+1;否则节点i无左孩子。