顺序表的五种操作
前提
定义结构体Seqlist,顺序表的两部分,数组和数组元素个数!!!很重要,不要忘记!
初始化顺序表
时间复杂度O(1)
求当前元素的个数
时间复杂度O(1)
插入元素
插入元素有三种可能性
1.顺序表已满无法插入
2.插入元素的位置不对(插入元素的位置是第一个元素到最后一个元素的下一个位置这个范围之间,在第一个元素插入就把原来所有的元素往后移,在最后一个位置的下一个位置插入元素不需要移动元素,是空的)
3.可以成功插入
注意循环遍历不是只有上面一种写法,同时不要忘记顺序表的元素要加1
也可以这样写,随便你怎么写,别写错了就行,只要你想的通想得明白,爱怎么写怎么写
平均时间复杂度为O(n),平均移动元素次数为n/2(假设有n个元素)
知道为啥不?
如果在第一个元素插入,要移动n个元素,最后一个元素后插入移动0个元素,所以(n+0)/2
j--应该知道为什么吧?
它是从最后一个元素开始向前遍历的,数组下标不断减小1。
删除元素
和插入元素差不多,你知道怎么回事就行,循环遍历的条件有的人可能会觉得难,其实对你来说不难的,你先理解是怎么遍历的,再进行调整(有没有‘=’要特别注意),平均时间复杂度为O(n),平均移动次数为(n-1)/2(假设n个元素)
删除第一个元素,要移动(n-1)个元素,删除最后一个元素移动0个,(n-1+0)/2
取元素
和删除元素差不多,直接利用数组下标就可以找到元素,所以顺序表是随机存储结构,因为没有循环,所以时间复杂度为O(1)