线性表

顺序表 ArrayList & LinkedList

操作合集

01. 创建表 createList

// 默认使用 Java 的 ArrayList 作为 顺序表, 所以不需要创建, 直接使用
ArrayList<String> mySequenceList = new ArrayList<String>();
LinkedList<String> myLinkedList = new LinkedList<String>();

02. 初始化 initList (默认提供初始化, 不需要特殊初始化)

但是, 因为 Java 的 ArrayList 是支持动态增长的, 所以, 并不是一下子分配了所有的内存空间, 而是一点点增长的.

比如, ArrayList<String> mySequenceList = new ArrayList<String>(10);   // 这样也没有用, 并不是一下子分配了10个存储单元的. 

03. 返回长度 listLength

mySequenceList.size()
myLinkedList.size()

04. 判断空表 ListEmpty

mySequenceList.isEmpty()
myLinkedList.isEmpty()

05. 插入元素 listInsert

// 插入队尾
mySequenceList.add("asdf");
// 插入指定 index 位置, 但是 index 要 < size()
// 相当于前位插入
mySequenceList.add(0, "bi");
myLinkedList.add("a");
myLInkedList.add(0,"b1");

06. 删除元素 listDelete

// remove 按照 index 顺序
mySequenceList.remove(0);
// remove 按照 value 值
mySequenceList.remove("asdf");
myLinkedList.remove(0);
myLinkedList.remove("asdf");

07. 返回元素前驱 / 后继元素 priorElem, nextElem

// sequence return
int seq = mySequenceList.indexOf("asdf");
if (seq >= 0) {
    int prior = seq - 1;
    int next = seq + 1;
    if (prior >= 0) {
        System.out.println("prior: " + mySequenceList.get(prior));
    }
    if (next <= mySequenceList.size()) {
        System.out.println("next: " + mySequenceList.get(next));
    }
}
// for linked list:

08. 返回元素后继元素 nextElem

reference 07

09. 获得元素位置 LocateElem

int seq = mySequenceList.indexOf("asdf");

10. 返回某个位置元素 retrieve

mySequenceList.get(0);

11. 清空顺序表 ClearList

mySequenceList.clear();

链表 LinkedList

 

循环链表

 

双向链表

LinkedList 是一个双向链表.

Comments

直接使用提供的方式, 还是有不方便的地方,例如: 无法直接获得前驱和后继, 可能还需要自己编码. 

这个方法本身不是 ArrayList 和 LinkedList 的标准方法.

数据结构, 还是额外自己定义的更加灵活, 直接使用系统提供的, 还是有很多的函数本身没有的.

posted @ 2021-10-31 16:27  神之一招  阅读(33)  评论(0编辑  收藏  举报