线性表(Liner List):由叫做元素的数据项组成的一种序列
特征:可以不包含任何元素(空表)
每个元素都有自己的位置
元素之间有如下关系:如果元素个数是n,且n>0,则x[0]是第一个元素,x[n
-1]是最后一个元素。
当0<k<n-1时,x[k]在x[k+1]前在x[k-1]后。
x[0]x[n-1]分别称为表头、表尾
除了表头没有前驱,表尾没有后继以外,其余表项都有一个直接前去和一个直接后继。
在线性表上可以进行的操作:
修改、插入、删除、组合线性表、拆分、排序、得到个数、搜索
根据对插入删除访问操作限制,线性表可分为以下几种:
1.list:允许在任何位置插入删除访问元素
2.stack(栈)只允许在线性表的表尾操作(也成为栈底)
3.queue(队列):只允许在一端插入(队尾),另一端删除或访问(队头)
4.deque(双端队列):只允许在表头或表尾操作。
实现方式:1.元素时连续存放的(数组)
2.元素之间是离散存放的(链表)
单向链表只能获得直接后继而不能获得直接前驱,而数组中的数据通过物理上的连续存放可以获得其逻辑关系。
不同应用可以规定不同的ADT。
插入的新元素在currpos 即当前位置插入。当前指针可由setFitst next等操作移位。append函数将在表尾插入。
List的实现--基于数组的实现:
1.插入 Θ(n)curr往后所有的都后移一位,然后将item赋值给curr
2.删除,curr往后所有的都向前一位,Θ(n)