大话数据结构 - 线性表

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

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 代码GitHub地址 链表概述 数组和链表都是线性存储结构的基础实现,栈和队列都是线性存储结构的应用 数组优缺点 ...
    HikariCP阅读 1,464评论 0 0
  • 1.线性表的定义 线性表:零个或多个数据元素的有限序列序列:也就是说元素之间是有顺序的,若元素存在多个,则第一个元...
    e40c669177be阅读 2,088评论 6 15
  • 转自:http://blog.csdn.net/oreo_go/article/details/52116214 ...
    YYT1992阅读 1,029评论 0 4
  • 从数据的逻辑结构来分,数据元素之间存在的关联关系被称为数据的逻辑结构。归纳起来,应用程序中的数据大致哟如下四种基本...
    Jack921阅读 962评论 0 2
  • 第二章 缓慢思维VS敏捷思维 思维在不停的跳跃,要想控制这条永不停歇的思维河流,让它为实现自己的目标服务,需要强大...
    Vicky_L阅读 558评论 0 0