数据结构 速记篇
一、结构图
二、线性表
1、特征
1)线性表是一个序列。
2)0个元素构成的线性表是空表。
3)一般来说,线性表中的第一个元素无前驱,最后一个元素无后继,其他元素有且只有一个前驱和后继。特殊:循环链。
4)线性表是有长度的,其长度就是元素个数,且线性表的元素个数是有限的,也就是说,线性表的长度是有限的。
2、分类
1)顺序表:用一段地址连续的存储单元依次存储线性表的数据元素,其实就是数组。
优点:
1、无需为了表示表中元素之间的逻辑关系而增加额外的存储空间(相对于链式存储而言)。
2、可以快速的存取表中任意位置的元素。
缺点:
1、插入和删除操作需要移动大量的元素。
2、当线性表长度变化较大时,难以确定存储空间的容量。
3、容易造成存储空间的“碎片”
2)链表:用一组任意的存储单元存储线性表的数据元素,这组存储单元可以存在内存中未被占用的任意位置。即链表由一个或者多个结点(Node,数据域和指针域)组成。
(转)
单链表:每个链表只包含一个指针域
双链表:它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。
三、栈
1、特征;
1)只能在表的一端(栈顶),进行插入、删除
2)先进后出,后进先出(LIFO)
2、分类:
1)顺序栈:“上溢”“下溢”问题
2)链栈:它就象是一条一头固定的链子,可以在活动的一头自由地增加链环(结点)而不会溢出
四、队列
1、特征:
1)插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插入的一端称为队头(Front)
2)先进先出(FIFO)
2、分类:
1)顺序队列:“假上溢”,解决方法:使用循环队列
2)链队:
五、树
1、二叉树
1)特征:除了叶(没有子节点)以外的结点,都有两个子
2)树的遍历
1> 前序遍历:从上往下,从左到右,根——>左——>右
2> 中序遍历:从下往上,从左往右,左——>根——>右
3> 后序遍历:从下往上,从左往右,左——>右——>根
3)习题:二叉树的先序遍历为:F B A C D E G H,中序遍历为:A B D C E F G H ,问该二叉树的后序遍历是?
4)习题:如图二叉树的,中序、后序遍历是?
中序遍历:D、C、F、B、G、O、E、H、A、J、P、K、I、M、L、N
后序遍历:D、F、C、O、G、H、E、B、P、K、J、M、N、L、I、A