参考文档(有些随手查一两个名词的,未被记录,有遗漏):
1、数组
无序数组和有序数组
无序数组的优点:插入快,如果知道下标,可以很快的存取
无序数组的缺点:查找慢(挨个比对),删除慢,大小固定。
有序数组的优点:查找效率高(二分法)
有序数组的缺点:删除和插入慢(当插入一个元素时,首先要判断该元素应该插入的下标,然后对该下标之后的所有元素后移一位,才能进行插入),大小固定
2、栈
后进先出(只允许访问一个数据项:即最后插入的数据。移除这个数据项后才能访问倒数第二个插入的数据项)
栈通常用于解析某种类型的文本串(如分隔符匹配)
3、队列
先进先出(栈的插入和删除数据项的命名方法很标准,成为push和pop,队列的方法至今也没有一个标准化的方法,插入可以称作put、add或enque等,删除可以叫作delete、get、remove或deque等)
环绕式处理(让队尾指针回到数组的第一个位置),形成循环队列(也成为缓冲环)。虽然在存储上是线形的,但是在逻辑上它是一个首尾衔接的环形
双端队列(队列的每一端都可以进行插入和移除操作,是队列和栈的综合体。如果限制双端队列的一段只能插入,而另一端只能移除,就变成了平常意义上的队列;如果限制双端队列只能在一端进行插入和移除,就变成了栈)
优先级队列(优先级队列有一个队头和一个队尾,并且也是从队头移除数据,从队尾插入数据,不同的是,在优先级队列中,数据项按关键字的值排序,数据项插入的时候会按照顺序插入到合适的位置)通常使用一种称为堆的数据结构来实现
4、链表
插入和删除都比较快的数据结构,缺点是查找比较慢。
除非需要频繁的通过下标来随机访问数据,否则在很多使用数组的地方都可以用链表代替。
在链表中,每个数据项都包含在“链结点”中,一个链结点是某个类的对象。每个链结点对象中都包含一个对下一个链接点的引用,链表本身的对象中有一个字段指向第一个链结点的引用
单链表
链表的删除指定链结点,是通过将目标链结点的上一个链结点的ne