java中的linkedlist的用法,Javalinkedlist
00-1010关于链表模拟实现链表准备工作头尾插入任意位置插入删除删除删除全部查找元素索引Of查找元素索引lastIndexOf判断链表是否包含某个元素获取链表长度链表为空清空链表。
目录
LinkedList的底层是通过双链表实现的,即在一个节点中,有一个对下一个节点地址的引用,还有一个对上一个节点地址的引用。
LinkedList还有三个成员变量:
size,指示链表中的节点数,first,指向链表的第一个节点,last,指向链表的最后一个节点。
关于LinkedList
00-1010静态内部类ListNode被创建,所有后续节点都需要ListNode来创建新节点。
私有静态类ListNodeE { ListNodeE pre//指向上一个节点ListNodeE next//指向下一个节点E val//节点public listnode(e val){ this . val=val的值;} }创建成员变量:第一,最后,大小
private ListNodeE优先;//指向链表的第一个节点,private ListNodeE last//指向链表结束节点的private int size//链表中的节点数为重写toString()方法,测试方法时需要将链表打印出来。
@ Override public String toString(){ StringBuilder sb=new StringBuilder();sb . append([);if(first==null){ sb . append(]);} else { ListNodeE cur=firstwhile(cur.next!=null){ sb . append(cur . val);sb .追加(,);cur=cur.next} sb.append(当前值);sb .追加(]);} return sb . tostring();}
00-1010在链表的头部插入一个节点。这里有两种情况:链表为空和链表不为空。
空链表:直接将首末节点指向本节点,因为本节点是首末节点。链表不为空:执行第一个节点的pre,然后将这个节点的next指向第一个,更新第一个位置。
插入结节点后,更新尺寸的长度并执行尺寸。
public void add first(E E){ ListNodeE new node=new ListNode(E);if(first==null){ first=new node;last=newNode} else { first.pre=newNodenewNode.next=firstfirst=newNode}大小;}进行测试:依次插入1、2、3、4并打印列表。
MyLinkedListInteger list=new mylinked list();
list.addFirst(1); list.addFirst(2); list.addFirst(3); list.addFirst(4); System.out.println(list);
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。