一、概念
对于常用的数据结构,可分为线性结构和非线性结构,线性结构主要是线性表,非线性结构主要是数和图。当n>0时,表可表示为:(a0,a1,a2,a3,…an)
1、 线性表的特征:
1、存在唯一的被称作”第一个”的数据元素
2、存在唯一的一个称作”最后一个的”数据元素”
3、除第一个之外,集合中的每个数据元素均只有一个前驱
4、除最后一个之外,集合中每个元素均只有一个后继
2、线性表的基本操作
1、初始化:
2、返回线性表长度
3、获取指定索引处元素
4、按值查找元素位置
5、直接插入数据元素
6、向指定位置插入元素
7、直接删除元素
8、删除指定位置元素
二、顺序存储结构
线性表的顺序结构是指用一组地址连续的存储单元依次存放线性表的元素。下面采用数组实现顺序结构线性表。
1 importjava.util.Arrays;2 public class Sequence{3 privateObject[] elementData;//定义一个数组
4 privateint DEFAULT_SIZE = 1; //数组默认大小
5 privateint capacity; //数组容量
6 privateint size = 0; //当前数组大小7 //初始化
8 publicSequence(){9 capacity= this.DEFAULT_SIZE;10 elementData= newObject[capacity];11 }12
13 publicSequence()(T element){14 this();15 elementData[0]=element;16 size++;17 }18
19 //返回线性表长度
20 public intlength(){21 return this.size;22 }23
24 //返回指定索引处元素。
25 public T getElementByIndex(intindex){26
27 if(index< 0 || index > (size-1)){28 System.out.println("索引范围越界!!!");29 System.exit(0);30 }31 return(T)elementData[index];32 }33 //按值查找数据元素的位置
34 public intgetIndexByValue(T value){35 for(int i = 0; i < elementData.length;i++){36 if(value.equals(elementData[i])){37 returni;38 }39 }40 return -1;//未找到则返回-1
41 }42
43 //向指定位置插入元素
44 public void insert(T element,intindex){45 ensureCapacity(); //确保线性表容量够
46 if(index>= 0 && index
49 for(i= (size-1); i >= index;i--){50 elementData[i+1]=elementData[i];51 }52 elementData[i+1]= element;//插入该元素
53 size++; //数组当前容量+1
54 }55 else{56 throw new IndexOutOfBoundsException("插入元素位置越界!!!");57 }58 }59
60 //想线性表末尾添加元素
61 public voidadd(T element){62 ensureCapacity(); //确保线性表容量够
63 elementData[size]=element;64 size++;65 }66
67 //删除线性表中指定位置元素
68 public void delete(intindex){69 if(index>&#