线性表(Linear List)算法
线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没有后继但有一个前驱结点,其它的结点都有且仅有一个前驱和一个后继结点。数组
线性表的顺序存储结构—顺序表数据结构
线性表采用顺序存储的方式存储就称之为顺序表。顺序表是将表中的结点依次存放在计算机内存中一组地址连续的存储单元中。指针
顺序表的特色对象
1.容量固定继承
存储顺序表的元素须要一整块内存空间,于是顺序表的容量一旦肯定,便不能更改。递归
2.访问速度快索引
假设每一个元素占用的空间大小为L个字节,其中第一个单元的存储地址则是该结点的存储地址,并设表中开始结点a1的存储地址(简称为基地址)是LOC(a1),那么结点ai的存储地址LOC(ai)可经过下式计算:LOC(ai)= LOC(a1)+L*(i-1) 1≤i≤n。内存
数组基础
线性表的顺序存储结构在C#中的最直接表现形式就是数组。在C#语言中,数组是最基础也是存取速度最快的一种集合类型。数组是引用类型,保存它们所需的内存空间会在托管堆上分配,一旦数组被建立,其中的全部元素将被初始化为它们的默认值。
int[] arrayInt= new int[10];
arrayInt[6] = 5;
arrayInt[8] = 3;
以上代码声明了一个值类型int的数组,并把它的长度初始化为10,最后分别给第7和第9个元素赋值。
当数组元素为值类型时,数组对象存放的是值类型对象自己。当元素为引用类型时,数组对象存放的则是对象的引用(指针)。
Control[] arrayControl= new Control[8];
arrayControl[4] = new DropDownList();
arrayControl[6] = new TextBox();
以上代码声明了一个引用类型Control的数组,并把它的长度初始化为8,最后分别给第5和第7个元素赋值。两个值是分别DropDownList和TextBox对象,虽然它们都继承自Control类,但二者倒是不一样类,它们的大小不同。
ArrayList
RemoveAt(int index)方法用于删除指定索引的元素,删除指定元素后,删除点后的全部元素将向前移动一位。
二叉树
二叉树是树形结构的一个重要类型。许多实际问题抽象出来的数据结构每每是二叉树的形式,即便是通常的树也能简单地转换为二叉树,并且二叉树的存储结构及其算法都较为简单,所以二叉树显得特别重要。
二叉树(BinaryTree)是n(n≥0)个结点的有限集,它或者是空集(n=0),或者由一个根结点及两棵互不相交的、分别称做这个根的左子树和右子树的二叉树组成。
这个定义是递归的。因为左、右子树也是二叉树, 所以子树也可为空树。
二叉树的深度优先遍历
1.先序遍历
若二叉树为非空,则过程为:
(1) 访问根节点。
(2) 先序遍历左子树。
(3) 先序遍历右子树。
2.中序遍历
若二叉树为非空,则过程为:
(1) 按中序遍历左子树。
(2) 访问根结点。
(3) 按中序遍历右子树。
3.后序遍历
若二叉树为非空,则过程为:
(1) 按后序遍历左子树。
(2) 按后序遍历右子树
(3) 访问根结点。