## Java数据结构（二）：线性表之顺序表 转

凌枫yong

``````package datastructure.linear.sequence;

import datastructure.exception.StructureException;
import datastructure.linear.AbstractList;

public class SequenceList<T> extends AbstractList<T>{

/** * 该顺序表的默认容量为10 */
private final static int defaultCapacity = 10;
/** * 实现顺序表的数组 */
private Object[] arrs;

/** * 实例化顺序表，使用默认的容量大小，为10 */
public SequenceList() {
this(defaultCapacity);
}

/** * 实例化顺序表， 指定顺序表的容量 * @param capacity */
public SequenceList(int capacity) {
arrs = new Object[capacity];
size = 0;
}

@Override
public void insert(int index, T t) throws StructureException {
if(arrs.length <= size) {
throw new StructureException("顺序表的容量已满");
}
if(index < 0 || index > size) {
throw new StructureException("参数异常！不能小于0或者大于当前长度");
}
// 插入前先后移之后的元素
for(int i = size ; i > index ; i--) {
arrs[i] = arrs[i-1];
}
arrs[index] = t;
size ++;
}

@Override
public void delete(int index)  throws StructureException{
if(isEmpty()) {
throw new StructureException("该顺序表为空！不存在任何元素");
}
if(index < 0 || index >size - 1) {
throw new StructureException("参数异常！不能小于0或者大于顺序表的容量");
}
for(int i = index+1 ; i < size ; i++ ) {
arrs[i-1] = arrs[i];
}
arrs[size -1] = null;
size--;
}

@SuppressWarnings("unchecked")
@Override
public T get(int index) throws StructureException {
if(isEmpty()) {
throw new StructureException("该顺序表为空！不存在任何元素");
}
if(index < 0 || index >arrs.length) {
throw new StructureException("参数异常！不能小于0或者大于顺序表的容量");
}
return (T) arrs[index];
}

}
``````

``````测试类：代码如下：
``````
``````package datastructure.linear.sequence;

import static org.junit.Assert.fail;

import org.junit.Test;

import datastructure.exception.StructureException;
import datastructure.linear.List;

public class SequenceListTest {

@Test
public void testSequenceList() throws StructureException {
List<String> list = new SequenceList<String>();
list.insert(0, "asdas");
list.insert(1, "sdf");
list.insert(1, "a");
int index = 0;
while(index < 10) {
if(list.get(index) != null) {
System.out.println(index + "----" + list.get(index));
}
index ++;
}
System.out.println(list.size());
}

@Test
public void testSequenceListInt() throws StructureException {
List<Integer> list = new SequenceList<Integer>();
for(int i = 0 ; i < 10 ; i ++) {
list.insert(i, i+1);
}
list.delete(4);
for(int i = 0 ; i < list.size() ; i++) {
System.out.print(list.get(i) + " ");
}
}

@Test
public void testInsert() {
fail("尚未实现");
}

@Test
public void testDelete() {
fail("尚未实现");
}

@Test
public void testGet() {
fail("尚未实现");
}

@Test
public void testSize() {
fail("尚未实现");
}

@Test
public void testIsEmpty() {
fail("尚未实现");
}

}
``````

### 凌枫yong

Stars-one
2018/07/29
0
0
Java实现栈Stack_栈内部使用数组存储结构

Java实现栈Stack_栈内部使用数组存储结构 抽象数据类型栈的定义： 栈（stack），是限定在表尾进行插入或删除操作的线性表，因此对栈来说表尾有其特殊的含义，称为栈顶，相应的，表头端称为栈...

2014/09/14
0
0

04/19
0
0

2018/08/06
0
0
java数组、集合和数据结构知识*

cjun1990
2015/06/27
0
0

MySQL从8.0.13版本开始支持一种新的range scan方式，称为Loose Skip Scan。该特性由Facebook贡献。我们知道在之前的版本中，如果要使用到索引进行扫描，条件必须满足索引前缀列，比如索引idx...

23分钟前
1
0

zhaowei121
32分钟前
1
0
ReentrantLock是如何基于AQS实现的

ReentrantLock是一个可重入的互斥锁，基于AQS实现，它具有与使用 synchronized 方法和语句相同的一些基本行为和语义，但功能更强大。 lock和unlock ReentrantLock 中进行同步操作都是从lock方...

java菜分享
33分钟前
0
0

33分钟前
1
0
centos7.4编译安装nginx

1、安装准备环境 yum install gcc gcc-c++ automake pcre pcre-devel zlip zlib-devel openssl openssl-devel pcre* 下载pcre wget https://jaist.dl.sourceforge.net/project/pcre/pcre/8.......

Marhal
35分钟前
0
0