Java 实现顺序结构线性列表

在学习编程的过程中,我觉得不止要获得课本的知识,更多的是通过学习技术知识提高解决问题的能力,这样我们才能走在最前方,本文主要讲述java 实现顺序结构线性列表,更多Java专业知识,广州疯狂java培训官网与你分享;

package com.ncu.list;

/**

 *

 * 顺序结构线性列表

 *

 * @author liuhao

 *

 */

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

    }

}

疯狂Java培训专注软件开发培训,提升学员就业能力,重点提升实践动手能力。高薪从IT名企请来项目经理为学员亲自授课,对学员进行实战教学,在没有工作经验的学员,在疯狂java,通过大量全真经典企业级项目进行集中培训,学员通过数月培训都可获得1-2年的工作经验,进而在同类的求职者中脱颖而出。疯狂Java培训让你体会java编程的快乐,项目开发的兴奋,成就感,通过短短几个月的时间,让你在半年的时间内掌握8-10万的代码量,掌握Java核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

原文地址:https://www.cnblogs.com/gojava/p/3384597.html