栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

线性表 -顺序表

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

线性表 -顺序表

一、线性表

线性表是最基本、最简单、也是最常用的一种数据结构 ,一个线性表是N个具有相同特性的数据元素的优先序列

前驱元素:
   若A元素在B元素的前面  则成为A为B的前驱元素

后继元素:

若b元素在A元素的后面 责成B为A的后级元素


二、线性表的特征∶

数据元素之间具有一种“—对一的逻辑关系。
1.第一个数据元素没有前驱,这个数据元素被称为头结点;
2.最后一个数据元素没有后继,这个数据元素被称为尾结点;
3.除了第一个和最后一个数据元素外,其他数据元素有且仅有一个前驱和一个后继。


三、线性表的分类

线性表中数据存储的方式可以顺序存储,也可以是链式存储 ,按照数据的存储方式不同,可以把线性表分为顺序表和链表

2顺序表的容量可变


当我们使用是群策List时 先new SqequenceList(5)创建一个对象,创建对象时就需要指定容器的大小 ,初始化指定大小的数组来存储元素,当我们插入元素时,如果已经插入了5个元素 还要继续插入数据,则会报错,就不能呢过插入了 这种设计不符合容器的设计概念,因此我们在设计顺序表示 ,应该考虑它的容量的伸缩性。


考虑容器的容量伸缩性,其次就是改变存储数据元素的数组的大小,那我们需要考虑什么时候需要改变数组的大小?
1添加元素是时:


 添加元素时 应该检查当前数组的大小是否能够容纳新的元素,如果不能容纳·,则需要创建新的容量更大的数组,我们这里创建一个是原数组两倍容量的新数组存储元素

2移除元素时

 

四、代码实现

package 数据结构;

import java.util.Iterator;


public class SequenceList   implements Iterable{

    //存储元素的数组
    private  T[] eles;
    //记录顺序表中的元素个数

    private  int N;
    public  SequenceList(int capacity){
        //初始化数组

        this.eles=(T[])new Object[capacity];

        //初始化长度
        this.N=0;
    }


    //将线性表置空
    public  void clear(){

        this.N=0;

    }

    //判断线性表是否为空
    public  boolean isEmpty(){


        return  N==0;

    }

    //获取线性表长度
    public  int length(){
        return  N;

    }

    //获取指定位置的元素
    public  T get(int i){

        return  eles[i];
    }

    //向线性表添加元素

    public  void  insert(T t){
        if(N==eles.length)
        {
            resize(eles.length*2);
        }
        eles[N++]=t;

    }


    //在i匀速处插入元素t
    public  void  insert(int i,T t){
        if(N==eles.length)
        {
            resize(eles.length*2);
        }

        //先把i所引出元素机器后面元素一次向后移动一位

        for (int j = N; j >i;  j--) {
            eles[j]=eles[j-1];


        }

        eles[i]=t;

        N++;
        //再把t元素方法哦i

    }

    //删除指定位置i出的元素 并返回该元素
  public  T remove(int i){


        //记录索引i处的值
      T  current=eles[i];
      //索引i后面的值一次向前

      for (int j = i; j  

测试代码

package 数据结构.Test;

import 数据结构.SequenceList;


public class SequenListTest {
    public static void main(String[] args) {

        SequenceList s1=new SequenceList<>(10);


        s1.insert("姚明");
        s1.insert("科比");
        s1.insert("麦迪");
        s1.insert(1,"詹姆斯");

        String getresult=s1.get(1);
        for (Object o : s1) {

            System.out.println(o);
        }


        System.out.println("索引1处的结果为+"+getresult);


        String remove = s1.remove(2);


        System.out.println("删除的元素为"+remove);


        System.out.println(s1.length());


        for (Object o : s1) {

            System.out.println(o);
        }

    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/992853.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号