美文网首页
大话数据结构 - 线性表

大话数据结构 - 线性表

作者: HikariCP | 来源:发表于2018-04-19 08:49 被阅读9次

    代码GitHub地址


    线性表

    • 线性表需要相同的数据类型
    • 线性表的处理方式都是先取代,后目的。比如删除链式线性表的某个节点的流程,先取代delete point使它的前驱节点指向它的后继节点,这样就完成了取代。然后再free()掉这个节点,这样就达到了目的。再比如加入某个节点,先使add point指向add index要加入处的后继节点,这即取代。然后再使add index的前驱节点指向add point

    解题步骤:

    1. 先考虑特殊情况,边缘值
    2. 进入退出循环时需要找准条件,考虑清楚退出循环时所需要的变量的终值是多少,方便使用
    3. 审视全局,带正确的值判断是否AC

    线性表的操作

    线性表

    public class ArrayList_ {
    
        /**
         * 线性表最大容量
         */
        private static final int MAX_SIZE = 100;
        /**
         * 线性表value容器
         */
        public int[] arraylist = new int[MAX_SIZE];
        /**
         * 线性表当前长度
         */
        public int arrayListLength;
    
    }
    

    获取链表中的第index个元素

    /**
     * 获取链表中的第index个元素
     *
     * @param arrayList_
     * @param index
     * @return
     */
    public static int get(ArrayList_ arrayList_, int index) {
        if (arrayList_.arrayListLength == 0 || index > MAX_SIZE || index < 1) {
            return 0;
        }
        return arrayList_.arraylist[index - 1];
    }
    

    在第index的位置插入元素value

    /**
     * 在第index的位置插入元素value
     *
     * @param arrayList_
     * @param index
     * @param value
     * @return
     */
    public static int insert(ArrayList_ arrayList_, int index, int value) {
        if (arrayList_.arrayListLength >= MAX_SIZE || index > arrayList_.arrayListLength || index < 1) {
            return 0;
        }
        if (index <= arrayList_.arrayListLength) {
            // 插入到表已有元素中
            // 从线性表的最后一个元素到当前插入挤出的元素,依次向后移一位
            for (int i = arrayList_.arrayListLength - 1; i >= index - 1; i--) {
                arrayList_.arraylist[i + 1] = arrayList_.arraylist[i];
            }
        }
        
        arrayList_.arraylist[index - 1] = value;
        arrayList_.arrayListLength++;
        return 1;
    }
    

    删除单链表第index个的元素

    /**
     * 删除单链表第index个的元素
     *
     * @param arrayList_
     * @param index
     * @return 返回删除的元素的value
     */
    public static int remove(ArrayList_ arrayList_, int index) {
        if (index > arrayList_.arrayListLength || index < 1 || arrayList_.arrayListLength == 0) {
            return 0;
        }
        // 删除的元素不在线性表尾
        if (index < arrayList_.arrayListLength) {
            // 后续的值往前顶
            for (int i = index - 1; i < arrayList_.arrayListLength - 1; i++) {
                arrayList_.arraylist[i] = arrayList_.arraylist[i + 1];
            }
        }
        arrayList_.arrayListLength--;
        return 1;
    }
    

    很基础,没什么难度,全程闭着眼写,嘿嘿

    相关文章

      网友评论

          本文标题:大话数据结构 - 线性表

          本文链接:https://www.haomeiwen.com/subject/lnpikftx.html