1、列表和链表

  列表是一种数据结构,是一种概念性表示法,链表是一种具体的实现策略,列表和栈、队列一样可以用数组和链表实现。

2、栈、队列、列表

  列表和栈与队列一样,是一种线性结构,但列表更加一般,栈和队列只能在集合末端进行元素的增加和删除,列表可以在集合中间和末端进行元素的增加和删除。

  此外列表含有3种类型:

  • 有序列表:其元素按照元素的某种内在特性进行排序。
  • 无序列表:其元素不具有内在顺序,元素按照它们在列表中的位置进行排序。
  • 索引列表:其元素可以使用数字索引来使用。

  有序列表是基于列表中元素的某种特性进行排序的,添加新元素时会根据元素的特性确定元素在列表中应该存储的位置。

  无序列表中各元素的位置并不基于元素的任何特性,但不要被其名字误导,“无序”指的是不按照元素的任何特性进行排序,而不是指序列是无序的,事实上序列中的元素是按照特殊顺序放置的,只不过这种顺序与元素本身无关——列表的使用者或决定元素的顺序。

  与无序列表类似,索引列表中的元素不按照任何元素特性进行排列,元素在列表中的位置由使用者决定。不过,列表中的每一个元素都能通过一个数字索引值进行引用。是否觉得索引列表和数组很像?注意,索引列表和数组最根本的区别在于:索引列表的索引值总是连续的,索引列表中的元素是“挨着”的,如果删除了列表中的一个元素,列表中其他元素的位置会进行调整,以消除删除元素带来的空位置。