声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权;凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记。 链表集合:1.单链 (单方面联系,只能找到下家,找不到上家) 2.双链 (双链结构,既知道上家,也知道下家) 链表集合好比自行车的链条,自行车的链条可增加和截取,可以随意截取某一节链条或收缩某一个链条,就算链条断了我们也可以添加一两节给接起来,修复好的链条以后也不会影响我们对自行车的骑行、使用。 出于数组集合不能很随意的添加或删除,所以链表集合可随意扩展、删除,改善了数组集合的不足。 链表集合是用数组来制作的,申请数组时长度为3,第1个是上家的引用,第2个是数组的存储,第3个是下家的引用。 链表制作: 首先申请属性,第1个属性是object[] tou数组指的是头的部分,第2个属性申请一个object[] wei 尾,这两个属性的目的就是为了记载链表的头和尾。接着申请一个size 主要寄存的是大小。 申请一个添加方法public void add (object val),if询问头等不等于空(是不是第一次添加数据) ,是第一次添加数组就new object[]{null,val,null},前后位null是因为他是第一次添加数组,既没有上家,也没有下家。We i= tou; 只有一个数组,既是头也是尾(是第一个也是最后一个)。else 这里表示不是第一次添加对象,所以Object[] bojs =new object[]{null,val,null} ,然后拿着objs[0]=wei(上家指向),wei[2]=objs;(尾的下家指向),wei=objs; (把新new出来的数组交给尾巴) 向前面添加:public boiv addFirst(Object val){} If tou等不等于null,等于null调用add(val);添加方法。Else 有的话就新new一个数组出来 Object[] objs=new Object[null,val,tou]; ,第一个头等于空,第二个传进来的参数,第三个老数组的头。Tou[0]=objs;头的第0个=新new出来的数组,tou =objs;现在的头是新new出来的数组。 向后面添加:public boiv addLast(Object val){} add(val); 默认向后添加。 删除最面前的对象:public object removeFirst(){} If 问头等不等于null,头等于null就抛出异常(没有内容异常)。 If 问头等不等于尾,问一下是不是只剩一个了,只剩下一个的话直接清空并把对象反馈出去。 else 不为空,拿出头大下家object [] nextobj=(object[]tou [2]); ,头的下家的上家等于null,nextobj[0]=null; ,并把头指向原来的下家tou=nextobj; 删除最后面的对象:public object removeLast(){} 代码结构: |