算法
算法是解决特定问题求解步骤的描述,在计算机中表现为左岭的优先序列,并且每条指令表示一个或多个操作
算法五特性:输入、输出、有穷性、确定性、可行性
好的算法:正确性、可读性、健壮性、高效率和低存储量
线性表(list)
零个或多个数据元素的有限序列
线性表的顺序存储结构
指的是用一段地址连续的存储单元一次存储线性表的数据元素
优点:无需为表示表中元素之间的逻辑关系而增加额外的存储空间,可以快速的存取表中任意位置的元素
缺点:插入和删除需要移动大量的元素,当线性表长度变化较大时,难以确定存储空间的容量,造成炖出空间的碎片
线性表的链式存储结构
需要存储元素信息外,还要存储他的后继元素的存储地址
头指针:是链表指向第一个结点的指针,有链表有头结点,则是只想头结点的指针,具有标识作用,所以蝉蛹头指针冠以链表的名字,无论链表是否为空。头指针都存在
头结点:是为了操作的统一和方便而设立的,放在第一元素的结点之前。其数据域一般无意义(可存放链表长度),有了头结点,对在第一元素节点前插入节点和删除第一节点就和替他节点的操作想通了,头结点并不必要
栈
限定仅在表尾进行插入和删除操作的线性表
栈特点:先进后出
把一个直接调用自己或通过一系列的调用语句间接的调用自己的函数,称作递归函数,(栈用于递归)
队列
是只允许在一端进行插入操作,而在另一端进行删除操作的线性表
特点:先进先出
树
树是n(n>=0)个结点的有限集。n= 0时称为空树。在任意一颗非空树中:
1、有且仅有一个特定的称为根的结点
2、当n>=1时,其余结点可分为m(m>0)个互不相交的有限集T1、T2、......、Tm。其中每一个集合本身又是一棵树,并且称为根的子树
树中结点的最大层次称为树的深度或高度
二叉树
二叉树是n(n>=0)个结点的有限集。该集合或者为空集(称为空二叉树),或者由一个根节点和两棵互不相交的,分别称为根节点的左子树和柚子树的二叉树组成