一、顺序表的定义:
在计算机内存中,开辟一片连续的存储空间,用一组连续的存储单元依次存放数据元素。这种存储方式就叫做线性表的顺序存储结构,也就是顺序表
顺序存储结构的特点,在逻辑上相邻的数据元素,它们的物理位置也是相邻的。即线性关系利用物理上的相邻关系来体现,第i个数据元素的存储位置可表示为:
LOC(ai) = LOC(a1)+(i-1)*m;
其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称为线性表的起始位置或基地址。显然,只要知道线性表的基地址LOC(a1)和一个数据元素占用的内存单元大小m,就能算出任一元素的存储地址,这样就可以随机存取顺序表中任意一个元素,因此线性表的顺序存储结构是一种随机存取的存储结构。
二,java描述顺序表:
三、线性表的优缺点:优点,1、随机存取元素容易实现,可以很容易确定每个元素的存储位置,,简单直观。缺点,1、插入和删除节点困难,由于表中的节点是依次连续存放的,所以插入和删除一个元素时,必须将插入点以后的节点依次向后移动,或将删除点以后的节点依次向前移动,2,扩展不灵活,建立表时,若估计不到表的最大长度,就难以确定分配的空间,影响扩展,容易造成浪费。
四、线性表的插入和删除算法:前面优缺点时说过,插入和删除一个元素时,必须将插入点以后的节点依次向后移动,或将删除点以后的节点依次向前移动,这姐是插入和删除算法的依据。
1、插入算法:
public void insertElement(Object obj,int i){
int j;
if(len == maxLen){
System.out.println("溢出");
return;
}else{
if((i<1) || i> len + 1){
System.out.println("插入位置不正确");
return;
}else{
for(j = len -1;j>i-1;j--){
v[j+1]=v[j];//将第i个元素后面的元素均后移一位
}
v[i-1]=obj;//在i前面插入obj
len ++ ;//线性表的长度加1
return;
}
}
}
2、删除算法:
public Object insertElement(int i){
Object obj;
int j;
if((i<1) \|| (i>len)){
System.out.println("删除位置不正确");
return null;
}else{
obj=v[[i-1];//把第i个元素赋值给obj
for(j = i;j<len;j++){
v[j-1]=v[j];//将第i个元素后面的元素均前移一位
}
len -- ;//线性表的长度-1
return obj;
}
}
}