zoukankan      html  css  js  c++  java
  • 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核心技术,迅速成为技能型的现代化高端人才,迅速获得高薪就业!

  • 相关阅读:
    「考试」省选62
    「考试」省选61
    「考试」省选59
    「刷题」THUPC泛做
    「考试」省选58
    「考试」省选57
    「考试」省选56
    「考试」省选55
    「考试」省选54
    「考试」省选52
  • 原文地址:https://www.cnblogs.com/gojava/p/3384597.html
Copyright © 2011-2022 走看看