目录
1.数据结构
数据结构是计算机存储、组织数据的方式(规则)。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。
比如自定义的一个类,也可以称为一种数据结构,自己定义的数据组合规则。
不要把数据结构想的太复杂,它只是定义的存储数据和表示数据之间关系的规则而已。
常用的数据结构:数组,栈,队列,链表,树,图,堆,散列表。
2.线性表
线性表是一种数据结构,是由n个具有相同特性的数据元素的有限序列。
比如数组、ArrayList、Stack、Queue、链表等。
顺序存储和链式存储就是数据结构中的两种存储结构。
3.顺序存储
数组、ArrayList、Stack、Queue、List——顺序存储,只是数组、Stack、Queue的组织规则不同。
顺序存储是指用一组地址连续的存储单元依次存储线性表中的各个数据元素。
4.链式存储
单向链表、双向链表、循环链表——链式存储。
链式存储(链接存储)是指用一组任意的存储单元存储线性表中的各个数据元素。
5.实现最简单的单向链表
增加
class LinkedList<T>
{
public LinkedNode<T> head;
public LinkedNode<T> last;
public void Add(T value)
{
//添加节点必然是new一个新节点
LinkedNode<T> node=new LinkedNode<T>(value);
if(head==null)
{
head=node;
last=node;
}
else
{
last.nextNode=node;
last=node;
}
}
}
class LinkedNode<T>
{
public T value;
//存储下一个元素是谁,相当于钩子
public LinkedNode<T> nextNode;
public LinkedNode(T value){...}
}
移除
例如:
link.Remove(2);
node=link.head;
while(node!=null)
{
Console.WriteLine(node.value);
node=node.nextNode;
}
link.Remove(1);
node=link.head;
while(node!=null)
{
Console.WriteLine(node.value);
node=node.nextNode;
}
6.顺序存储与链式存储的优缺点
从增删查改的角度去思考
增:链式存储计算上优于顺序存储(中间插入时链式不用像顺序一样去移动位置)。
删:链式存储计算上优于顺序存储(中间删除时链式不用像顺序一样去移动位置)。
查:顺序存储使用上优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)。
改:顺序存储使用上优于链式存储(数组可以直接通过下标得到元素,链式需要遍历)。