java实现顺序结构线性列表的函数代码

废话不多说,直接上代码


代码如下:

package com.ncu.list;

/**
 *
 * 顺序结构线性列表
 * 
 *
 */
public class SquenceList<T> {
    private int size; // 线性表的长度
    private Object[] listArray;
    private int currenSize = 0; // 当前线性表中的数据

public SquenceList() {

}

public SquenceList(int size) {
        this.size = size;
        listArray = new Object[size];
    }

public void arrayCopy(int index) {
        Object newArray[] = new Object[size];
        for (int i = 0; i < currenSize; i++) {
            if (i >= index) {
                newArray[i] = listArray[i + 1];
            } else {
                newArray[i] = listArray[i];
            }
        }
        listArray = newArray;
        newArray = null; // 释放资源
    }

/**
     * 根据索引位置移除元素
     *
     * @param index
     */
    public void remove(int index) {
        index = index - 1;
        if (index < 0 || index > currenSize) {
            System.out.println("线性表索引越界");
        }
        if (currenSize == 0) {
            System.out.println("线性表为空");
        } else {
            currenSize--;
            arrayCopy(index);
            if (currenSize == 0) {
                listArray = null;
            }
        }
    }

/**
     * 根据元素内容移除元素
     *
     * @param element
     */
    public void removeLocate(T element) {
        for (int i = 0; i < currenSize;) {
            if (element.equals(listArray[i])) {
                remove(i + 1);
            } else {
                i++;
            }
        }
    }

/**
     * 从线性表尾段插入数据
     *
     * @param element
     */
    public void add(T element) {
        if (currenSize > size || currenSize < 0) {
            System.out.println("线性表索引越界");
        } else {
            listArray[currenSize] = element;
            currenSize++;
        }
    }

private void insert(T element, int index) {
        index = index - 1;
        if (currenSize > size || currenSize < 0 || index < 0
                || index >= currenSize) {
            System.out.println("线性表索引越界");
        } else {
            Object newArray[] = new Object[size];
            for (int i = 0; i < currenSize; i++) {
                if (i >= index) {
                    newArray[index] = element;
                    newArray[i + 1] = listArray[i];
                } else {
                    newArray[i] = listArray[i];
                }

}
            listArray = newArray;
            newArray = null;
            currenSize++;
        }
    }

/**
     * 在指定索引位置插入数据
     *
     * @param element
     * @param index
     */
    public void add(T element, int index) {
        if (index == size) {
            add(element);
        } else {
            insert(element, index);
        }
    }

/**
     * 删除线性表最后一个元素
     */
    public void delete() {
        if (isEmpty()) {
            System.out.println("线性表为空,不能删除");
        } else {
            listArray[currenSize - 1] = null;
            currenSize--;
        }
    }

/**
     * 判读线性表是否为空
     *
     * @return
     */
    public boolean isEmpty() {
        if (currenSize == 0) {
            return true;
        } else {
            return false;
        }
    }

/**
     * 根据索引找到相应的元素
     *
     * @param index
     * @return
     */
    public T get(int index) {
        T obj = null;
        if (isEmpty() || index > currenSize || index < 0) {
            System.out.println("线性表为空,不能删除");
        } else {
            obj = (T) listArray[index - 1];
        }

return obj;
    }

/**
     * 清空线性表
     */
    public void clear() {
        size = 0;
        currenSize = 0;
    }

/**
     * 得到线性表当前的元素的个数
     *
     * @return
     */
    public int size() {
        return currenSize;
    }

public void showList() {
        if (currenSize > 0) {
            for (int i = 0; i < currenSize; i++) {
                System.out.println(listArray[i]);

}
        } else {
            System.out.println("线性表为空");
        }

System.out.println("------------");
    }

public static void main(String[] args) {
        SquenceList<Integer> list = new SquenceList<Integer>(10);
    }
}

(0)

相关推荐

  • android工程下不能运行java main程序的解决方法

    右击有main方法的类 ===> Run as ===> Run Configurations ===>双击java application ===> 单击有main方法的类 ===>选中classpath选项卡 ===> remove掉Bootstrap Entries下的android.jar ===> 然后点击advanced ===> Add Library ===>JRE System Library ===>next ===>最

  • 简单谈谈java中匿名内部类构造函数

    先看看下面的代码能不能编译通过: public static void main(String[] args) { List l1 = new ArrayList(); List l2 = new ArrayList(){}; List l3 = new ArrayList(){{}}; System.out.println(l1.getClass() == l2.getClass() ); System.out.println(l2.getClass() == l3.getClass() );

  • 在maven工程里运行java main方法

    在Maven工程里运行Java main方法 复制代码 代码如下: mvn compilemvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main"mvn exec:java -Dexec.mainClass="com.vineetmanohar.module.Main" -Dexec.args="arg0 arg1 arg2"

  • 再谈java回调函数

    又遇到了回调函数,这次打算写下来分享一下. 所谓回调函数,或者在面向对象语言里叫回调方法,简单点讲,就是回头在某个时间(事件发生)被调用的函数. 再详细点:就是一个函数A,作为参数,传入了另一个函数B,然后被B在某个时间调用. 这里可以有疑问了,既然是一个函数调用另一个函数,可以在函数体里面调用啊,为什么还要把函数作为参数传到另一个函数里被调用?何况还有一些语言(比如java)不支持把函数作为参数. 对的,确实可以在函数体里调用另一个函数,功能上好像是没差别的,但是这里有一个问题,就是你要调用的

  • Java语法基础之函数的使用说明

    函数四个方面:函数的定义函数的特点函数的应用函数的重载 一.函数的定义及特点1) 什么是函数?函数就是定义在类中的具有特定功能的一段独立小程序,函数也称为方法2)Java中函数的格式:修饰符 返回值类型函数名(参数类型 形式参数1,参数类型 形式参数2,..){  执行语句; return 返回值:}返回值类型:函数运行后的结果的数据类型参数类型:是形式参数的数据类型形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数实际参数:传递给形式参数的具体数值return:用于结束函数返回值:该

  • 实例分析Java中public static void main(String args[])是什么意思

    本文实例讲述了Java中public static void main(String args[])的来龙去脉.分享给大家供大家参考,具体如下: public static void main(String[] args) 这绝对不是凭空想出来的,也不是没有道理的死规定,而是java程序执行的需要. jvm在试图运行一个类之前,先检查该类是否包含一个特殊方法.这个方法必须是公有的,以便在任何位置都能访问得到.这个方法必须是static的,因为这个方法不能依赖任何该类的实例即可运行,而非stati

  • java 获取当前函数名的实现代码

    废话不多说,直接上代码 复制代码 代码如下: import java.text.SimpleDateFormat; import java.util.Date; /** * Java实现类似C/C++中的__FILE__.__FUNC__.__LINE__等,主要用于日志等功能中. * * @version 1.0  * */ public abstract class CommonFunction { /** * 打印日志时获取当前的程序文件名.行号.方法名 输出格式为:[FileName |

  • java构造函数示例(构造方法)

    TestCar.java 复制代码 代码如下: public class TestCar {    public static void main(String[] args) {        Car c1 = new Car();        c1.color = "red";        c1.brand = "xxx";//如果这辆汽车有很多属性,这样一一赋值不是很麻烦?有没有办法一生产出来就设定它的属性(初始化)吗?有~~~看下面          

  • java实现顺序结构线性列表的函数代码

    废话不多说,直接上代码 复制代码 代码如下: package com.ncu.list; /** *  * 顺序结构线性列表 *  *  */public class SquenceList<T> {    private int size; // 线性表的长度    private Object[] listArray;    private int currenSize = 0; // 当前线性表中的数据 public SquenceList() { } public SquenceLis

  • java转树形结构工具类详解

    本文实例为大家分享了java转树形结构工具类的具体代码,供大家参考,具体内容如下 import com.alibaba.fastjson.JSON; import lombok.Data; import lombok.ToString; import org.springframework.util.ReflectionUtils; import org.springframework.util.StringUtils; import java.lang.reflect.Field; impor

  • Java实现顺序表和链表结构

    目录 前言: 顺序表 定义: 实现方法: 代码实现: 链表 定义: 分类: 实现方法: 代码实现: 顺序表 & 链表 总结 前言: 线性表(linear list)是n个具有相同特性的数据元素的有限序列. 线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表.链表.栈.队列.字符串. 顺序表 定义: 用一段物理地址连续的存储单元依次存储数据元素的线性结构(逻辑上连续,物理上也连续) (1)静态顺序表:使用定长数组存储. (2)动态顺序表:使用动态开辟的数组存储 [注意]静态顺序表的定长数

  • Java流程控制顺序结构原理解析

    这篇文章主要介绍了Java流程控制顺序结构原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 流程控制的概念 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的.也就是说,程序的流程对运行结果有直接的影响.所以,我们必须清楚每条语句的执行流程.而且,很多时候我们要通过控制语句的执行顺序来实现我们要完成的功能. 流程控制之顺序结构 根据代码的编写顺序,从上往下,依次执行. 顺序结构之流程图 ​ 需求 举例说明顺序结构的执行

  • Java流程控制之顺序结构

    目录 1.关于顺序结构 2.顺序结构简单图示 3.示例助解 Java中的流程控制语句可以这样分类:顺序结构,选择结构,循环结构. 1.关于顺序结构 JAVA的基本结构就是顺序结构,除非特别指明,否则就按照顺序一句一句执行. 语句与语句之间,框与框之间是按从上到下的顺序进行的,它是由若干个依次执行的处理步骤组成的. 它是任何一个算法都离不开的一种基本算法结构. 2.顺序结构简单图示 顺序结构在程序流程图中的体现就是用流程线将程序框自上而地连接起来,按顺序执行算法步骤. 如图: 3.示例助解 pub

  • Java数据结构顺序表用法详解

    目录 1.什么是顺序表 2.顺序表的基本功能和结构 3.顺序表基本功能的实现和解析 1.判断线性表是否为空 2.获取指定位置的元素 3.向线性表表添加元素 4.在位置i处插入元素 5.删除指定位置的元素,并返回该元素 6.查找t第一次出现的位置 7.手动扩容方法 1.什么是顺序表 在程序中,经常需要将一组(通常是同为某个类型的)数据元素作为整体管理和使用,需要创建这种元素组,用变量记录它们,传进传出函数等.一组数据中包含的元素个数可能发生变化(可以增加或删除元素). 对于这种需求,最简单的解决方

  • Java采用循环链表结构求解约瑟夫问题

    本文实例讲述了Java采用循环链表结构求解约瑟夫问题的方法.分享给大家供大家参考.具体分析如下: 这是第一次java考试的试题,对于没看过链表的同学来说就不会做,现在回头看看,还真不难. 约瑟夫问题: 有n个人,其编号分别为1,2,3,-,n.这n个人按顺序排成一个圈.现在给定s和d,从第s个人开始从1依次报数,数到d的人出列,然后又从下一个人开始又从1开始依次报数,数到d的人又出列,如此循环,直到最后所有人出列为止.要求定义一个节点类,采用循环链表结构求解约瑟夫问题. 以下java版的答案:

  • Java实现顺序栈原理解析

    这篇文章主要介绍了Java实现顺序栈原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 什么是栈 1.栈的英文是stack 2.栈是一个先入后出的有序列表 3.栈是限制线性表元素的插入和删除只能在线性表的同一端进行的一种特殊的线性表,允许插入和删除的一端是,为变化的一端,成为栈顶,另外的一端为固定的一端为栈底 4.栈的定义可知,最先放入栈中的元素在栈底,最后放入的元素在栈顶,而删除的情况刚好相反,最后放入的元素先删除,最先放入的元素后删除

  • Java数据结构顺序表的详细讲解

    目录 写在前面 1.线性表 2.顺序表的实现 2.1增加数据 2.1.1尾部增加数据 2.1.2任意位置增加数据 2.2查找数据 2.3删除数据 2.4修改数据 3.ArrayList 3.1ArrayList的实例化 3.2ArrayList常用的方法 写在前面 关于数据结构,Java官方其实已经帮我们写好并封装起来了,在真正需要使用的时候直接调用即可,但为了更好的理解数据结构,我会按照源码的思路写一个简化后的数据结构,默认接收的数据为int 1.线性表 线性表是多个具有相同特性的数据元素的序

  • Java实现顺序表的操作详解

    目录 一.顺序表是什么 二.自定义异常 空引用异常 下标越界异常 三.顺序表的方法 顺序表的实现 获取顺序表长度 顺序表是否为空 顺序表是否为满 打印顺序表 末尾新增元素 指定位置新增元素 判断是否包含某元素 查找某个元素对应的位置 获取 pos 位置的元素 给 pos 位置的元素赋值 删除第一次出现的关键字key 清空顺序表 四.自定义顺序表 一.顺序表是什么 顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储.在数组上完成数据的增删查改. 数组不就是一个现

随机推荐