Java数据结构(一):线性表之开篇
2015-07-01 15:30
435 查看
1、线性表
线性结构的特点是除第一个和最后一个数据元素外的每个数据元素只有一个前驱数据元素和一个后继数据元素。线性表是一个最简单的线性结构。线性表的操作特点主要是可以在任意位置插入和删除一个数据元素。线性表可以用顺序存储结构和链式存储结构存储。用顺序存储结构实现的线性表称作顺序表,用链式存储结构实现的线性表称作链表。链表主要有单链表,循环单链表和双向循环链表三种。顺序表和单链表各有优缺点,并且优缺点刚好相反。
1.1 线性表的定义
线性表是一种可以在任意位置进行插入和删除数据元素操作的由n(n>=0)个相同类型数据元素a0,a1,a2,….,an-1组成的线性结构。
1.2 线性表的接口定义
该接口名为List 并且使用了泛型来指定对应类型。代码如下:
并且在实现中自定义了一种异常StructureException.代码如下:
1.3 线性表的抽象实现
该抽象类名为AbstractList:对线性表进行抽象实现,实现了上述接口的两个方法,具体代码如下:
好了!我们已经定义好接口和抽象类了,下面我们来具体来谈谈实现了吧!
线性结构的特点是除第一个和最后一个数据元素外的每个数据元素只有一个前驱数据元素和一个后继数据元素。线性表是一个最简单的线性结构。线性表的操作特点主要是可以在任意位置插入和删除一个数据元素。线性表可以用顺序存储结构和链式存储结构存储。用顺序存储结构实现的线性表称作顺序表,用链式存储结构实现的线性表称作链表。链表主要有单链表,循环单链表和双向循环链表三种。顺序表和单链表各有优缺点,并且优缺点刚好相反。
1.1 线性表的定义
线性表是一种可以在任意位置进行插入和删除数据元素操作的由n(n>=0)个相同类型数据元素a0,a1,a2,….,an-1组成的线性结构。
1.2 线性表的接口定义
该接口名为List 并且使用了泛型来指定对应类型。代码如下:
package datastructure.linear; import datastructure.exception.StructureException; /** * @Description 实现线性表结构的接口 * @author mastery * @Date 2015年6月29日下午8:14:33 * @param <T> */ public interface List<T> { /** * 在线性表指定位置插入元素t * @param index * @param t */ void insert(int index , T t) throws StructureException; /** * 删除该线性表中指定位置的元素 * @param index */ void delete(int index) throws StructureException; /** * 获得该线性表中指定位置的元素 * @param index * @return */ T get(int index) throws StructureException; /** * 得到该线性表当前的存在多少个元素 * @return */ int size() throws StructureException; /** * 判断该线性表是否为空 * @return */ boolean isEmpty() throws StructureException; }
并且在实现中自定义了一种异常StructureException.代码如下:
package datastructure.exception; public class StructureException extends Exception{ /** * */ private static final long serialVersionUID = 4187679158109073384L; public StructureException() { super(); } public StructureException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { super(message, cause, enableSuppression, writableStackTrace); } public StructureException(String message, Throwable cause) { super(message, cause); } public StructureException(String message) { super(message); } public StructureException(Throwable cause) { super(cause); } }
1.3 线性表的抽象实现
该抽象类名为AbstractList:对线性表进行抽象实现,实现了上述接口的两个方法,具体代码如下:
package datastructure.linear; import datastructure.exception.StructureException; public abstract class AbstractList<T> implements List<T>{ /** * 结构的长度 */ protected int size; @Override public int size() throws StructureException { return size; } @Override public boolean isEmpty() throws StructureException { return size == 0; } }
好了!我们已经定义好接口和抽象类了,下面我们来具体来谈谈实现了吧!
相关文章推荐
- Java数据结构(四):线性表之双向链表
- Java数据结构(三):线性表之单链表
- 中国大学MOOC-陈越、何钦铭-数据结构基础习题——总结
- Java数据结构(二):线性表之顺序表
- 逆波兰法求解数学表达示(C++) 分类: C/C++ 数据结构与算法 2015-07-01 14:41 128人阅读 评论(1) 收藏
- 算法与数据结构八日谈之一——图论算法
- 数据结构--栈和队列
- 《数据结构与算法分析c++描述》读书笔记四——伸展树、b+树
- 数据结构--二叉堆、d堆、左式堆和斜堆
- 数据结构基础温故-1.线性表(中)
- 常见数据结构算法边学边记
- 数据结构-中序转后序
- sizzle.js学习笔记利用闭包模拟实现数据结构:字典(Map)
- 【数据结构】链表
- get(index) set(index value), setAll(value)都为O(1)的数据结构
- 数据结构的基本概念
- 数据结构常见面试题
- java 数据结构
- 数据结构链表的操作集合(建立,遍历,插入,删除,排序,长度,空判断等)
- 数据结构顺序表的操作全集(创建,遍历,插入,删除,排序等等)