线性表的定义:零个或多个数据元素的有限序列。
定义的解读:
- 首先是由一组数据元素组成,可以基本数据类型,也可以使自定义的类型,
- 有限的个数,当然可以是0个,也就是空表呗,
- 还有一个特点就是有序
这么一看线性表抽象出来就和生活中的排队一样,一群小朋友站成一队,每个人都知道自己站在第几个,自己的前面是谁,后面谁,除了排头排位的两个数据,每个数据都有唯一的前驱和后继。
线性表的分类
今天先学习一下顺序存储结构,顺序存储结构指的就是用一段地址连续的存储单元依次存储线性表的数据元素;
这么一看线性表挺像数组的嘛,没错,顺序线性表的实现就是有数组来实现的
顺序线性表的插入与删除
插入:有几种情况
第一种:线性表已经满了,插队失败
第二种:插入位置不存在,插入失败
第三种:插在最后,直接到后面站队去
第四种:想插在中间,会麻烦后面的人都得向后移
线性表的删除:
1.就是看看先删除的第几个数是不是存在
2.存在的,将该元素后面的元素向前移动就行,和在中间插入时的操作相反;
自己实现ArrayList线性表,只是线性表的基本操作---插入,删除,查看,获取元素
package com.neuedu.entity; import java.util.ArrayList; import java.util.LinkedList; /* * 项目名称:JavaSqList * @author:wzc * @date 创建时间:2017年9月1日 下午11:08:03 * @Description:自定义List类 * @parameter * */ public class MyList { private static final int MAXSUM=20; private int [] date=new int[MAXSUM]; private int length; public MyList() { super(); length=0; } //获取线性表长度 public int getLength() { return length; } //判断线性表是否为空 public boolean isEmpty(){ if (length==0) { return true; } else { return false; } } //获取线性表的第i个数据 public int getIndex(int index){ //1.判断索引下标是否合法 if (index<0||index>length) { return -1; } //将索引值所对应的数据取出 int result=date[index-1]; return result; } //向线性表中插入数据,参数:插入的数据,插入的位置 public void InsertList(int num,int index){ //1.判断线性表是否已经满了 if (length==MAXSUM) { System.out.println("线性表已经满了"); return; }else if (index<0||index>length+1) {//.判断插入位置是否合法 System.out.println("插入位置不合法"); return; }else if(index<=length){//插入的位置不是最后一个 for(int k=length-1;k>=index-1;k--){ date[k+1]=date[k]; } } date[index-1]=num; length++; System.out.println("插入成功"); } //将线性表中的数据输出 public void toStringMylist(){ if (!isEmpty()) { for (int i=0;i<length;i++) { System.out.print(date[i]+" "); } System.out.println(); }else { System.out.println("null"); } } //判断一个数据是否在线性表中,若在返回在第几个位置 public int indexOf(int num){ for (int i=0;i<length;i++) { if (date[i]==num) { return i+1; } } return -1; } //删除数据表中的第i个数据 public void deleteNum(int index){ if (length==0) { System.out.println("list为空"); return; }else if (index<0||index>=length) { System.out.println("下标越界"); return; }else { int num=date[index-1]; for(int k=index;k<length;k++){ date[k-1]=date[k]; } length--; System.out.println(num+"已经删除"); } } }