今日任务:
单链表
- 结构:
head|next->node1|next->…->noden|next->null - 首先创建单链表要先声明好节点的数据参数和指向下一个数据节点的参数,
然后初始化头节点。 - 单链表在末尾添加数据时需要从头节点开始遍历知道节点指向null,然后将最后一个节点指向要添加的数据然后让要添加的数据的next节点指向null
head|next->node1|next->…->noden|next-> null;
->new|next-> - 删除操作需要遍历到要删除的节点的前一个节点然后让这个节点指向下下个节点的数据即可
head|next->node1|next- node2|next-> node3|next->…->noden|next->null;
^ – - -> ^ - 插入操作需要遍历到要插入的节点的位置然后让要插入的数据指向下一个节点,然后让要前面的节点指向要插入的节点。
head|next->node1|next- node2|next-> node3|next->…->noden|next->null;
->new|next-> - 替换操作是删除和插入的结合
双向链表
- 结构:
null<-previous|head|next->previous|node|next->. . . . . . . ->previous|noden|next->null
^<- - - -| ^<-- - --| - 与单链表相同都要先定义头结点,但它比单链表要多定义一个previous前驱指向前一个数据
- 双向链表在添加替换删除时不仅需要将next指向后一个数据还需要要将前驱指向前一个数据。
基于数组底层实现增删该查
- 先声明数组变量int[] array和数组中元素数量的变量size
- 然后初始化数组长度与元素数量为0
- 在插入操作中要判断元素是否占满所有容量没占满就插入指定位置并将后面所有数据后移,如果满了就用System.arraycopy()将次数组放入一个新数组,或者先对数组进行扩容原理是相同的都是产生一个新数组,然后让原数组指向新数组。
- 删除操作要先找到指定位置然后将后面的数据全部前移
- 查看和修改操作可以直接根据位置获取数据直接修改或查看