原创博文,转载请注明出处
线性表是一种逻辑结构,表示元素之间一对一的相邻关系。顺序表和链表是指存储结构,两者属于不同层面的概念,因此不要将其混淆。接下来我们学习:
顺序表最主要的特点是可以进行随机存取,即通过首地址和元素序号可以在O(1)的时间内找到指定的元素。顺序表的存储密度高,每个节点只存储数据元素,但是插入和删除需要移动大量元素。
插入、删除、查找的时间复杂度为O(n)
综合应用 :
1、设计一个高效算法,将顺序表的所有元素逆置,要求算法的空间复杂度为O(1).
算法思想:扫描顺序表L的前半部分元素,对于元素L.data[i](0<=i<=L.length/2),将其余后半部分对应元素L.data[L.length-i-1]进行交换。
1 void Reverse(Sqlist &L){ 2 Elemtype temp; 3 for(i=0;i<L.length/2;i++){ 4 temp=L.data[i]; 5 L.data[i]=L.data[L.length-i-1]; 6 L.data[L.length-i-1]=temp; 7 } 8 }