一、线性表
线性表是最基本、最简单、也是最常用的一种数据结构 ,一个线性表是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 SequenceListimplements 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) { SequenceLists1=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); } } }



