文档章节

Java数据结构(一):线性表之开篇

凌枫yong
 凌枫yong
发布于 2016/07/17 13:42
字数 621
阅读 23
收藏 0

1、线性表

线性结构的特点是除第一个和最后一个数据元素外的每个数据元素只有一个前驱数据元素和一个后继数据元素。线性表是一个最简单的线性结构。线性表的操作特点主要是可以在任意位置插入和删除一个数据元素。线性表可以用顺序存储结构和链式存储结构存储。用顺序存储结构实现的线性表称作顺序表,用链式存储结构实现的线性表称作链表。链表主要有单链表,循环单链表和双向循环链表三种。顺序表和单链表各有优缺点,并且优缺点刚好相反。

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;
    }
}

好了!我们已经定义好接口和抽象类了,下面我们来具体来谈谈实现了吧!

本文转载自:http://blog.csdn.net/u011990285/article/details/46710861

凌枫yong
粉丝 1
博文 65
码字总数 0
作品 0
南昌
私信 提问
数据结构(java版)学习笔记(一)——线性表

一、线性表的定义 线性表是n(n>=0)个具有相同特性的数据元素的有限序列。 线性表是最简单、最常用的一种数据结构 线性表属于线性结构的一种 如果一个数据元素序列满足: (1)除第一个和最...

Stars-one
2018/07/29
0
0
JVM规范系列第4章:Class文件格式

这一章节讲的是字节码的整个组成格式,读懂了这一章,就读懂了字节码文件。对于这一章的学习,我更推荐作为工具书去查找。最好是找一个最简单的Hello World例子,一个字节一个字节去分析其含...

陈树义
2018/12/19
0
0
《数据结构与算法系列》合集整理

《数据结构与算法系列》合集整理 整理来自博客园skywang12345,以下摘自作者介绍: “最近抽空整理了"数据结构和算法"的相关文章。在整理过程中,对于每种数据结构和算法分别给出"C"、"C++"...

kaixin_code
2018/12/01
0
0
Java实现栈Stack_栈内部使用数组存储结构

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

秋风醉了
2014/09/14
0
0
JVM规范系列第3章:为Java虚拟机编译

Oracle 的 JDK 包括两部分内容:一部分是将 Java 源代码编译成 Java 虚拟机的指令集的编译器,另一部分是用于Java 虚拟机的运行时环境。 第一部分应该说的是 Javac 这个前置编译器,用于将J...

陈树义
2018/12/19
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Linux修改时区的正确方法【修改时间,需要修改软连接,靠谱】

CentOS和Ubuntu的时区文件是/etc/localtime,但是在CentOS7以后localtime以及变成了一个链接文件 [root@centos7 ~]# ll /etc/localtime lrwxrwxrwx 1 root root 33 Oct 12 11:01 /etc/loca......

Airship
45分钟前
0
0
《Netkiller Spring Cloud 手札》之 Master / Slave 主从数据库数据源配置

5.19.1. Master / Slave 主从数据库数据源配置 5.19.1.1. application.properties spring.datasource.master.driverClassName = com.mysql.cj.jdbc.Driverspring.datasource.master.url=j......

netkiller-
49分钟前
46
0
大数据(hadoop-HDFS的本地开发环境的配置与常见的HDFS的JAVA API)

HDFS的本地开发环境搭建 1:所需工具 1)hadoop2.7.3安装包 2)hadoop-eclipse-plugin插件 https://github.com/winghc/hadoop2x-eclipse-plugin 2:搭建过程 1:解压hadoop2.7.3文件2:下载...

这很耳东先生
今天
1
0
TCP协议的定义和丢包时的重传机制

TCP是一个巨复杂的协议,因为他要解决很多问题,而这些问题又带出了很多子问题和阴暗面。所以学习TCP本身是个比较痛苦的过程,但对于学习的过程却能让人有很多收获。关于TCP这个协议的细节,...

tantexian
今天
2
0
图解Tomcat类加载机制(阿里面试题)

Tomcat的类加载机制是违反了双亲委托原则的,对于一些未加载的非基础类(Object,String等),各个web应用自己的类加载器(WebAppClassLoader)会优先加载,加载不到时再交给commonClassLoader走双...

群星纪元
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部