线性表的顺序存储结构(顺序表)

一、顺序表的定义:

    在计算机内存中,开辟一片连续的存储空间,用一组连续的存储单元依次存放数据元素。这种存储方式就叫做线性表的顺序存储结构,也就是顺序表

    顺序存储结构的特点,在逻辑上相邻的数据元素,它们的物理位置也是相邻的。即线性关系利用物理上的相邻关系来体现,第i个数据元素的存储位置可表示为:

LOC(ai) = LOC(a1)+(i-1)*m;

其中,LOC(a1)是线性表的第一个数据元素a1的存储位置,通常称为线性表的起始位置或基地址。显然,只要知道线性表的基地址LOC(a1)和一个数据元素占用的内存单元大小m,就能算出任一元素的存储地址,这样就可以随机存取顺序表中任意一个元素,因此线性表的顺序存储结构是一种随机存取的存储结构。

 

二,java描述顺序表:

线性表的顺序存储结构(顺序表)_第1张图片

线性表的顺序存储结构(顺序表)_第2张图片

 

三、线性表的优缺点:优点,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

                           v[j-1]=v[j];//将第i个元素后面的元素均前移一位

                     }

                     len -- ;//线性表的长度-1

                     return obj;

            }

        }

}

 

你可能感兴趣的:(java)