赞
踩
先定义一个节点Node:
public class Node { Node previous; //上一个节点 Node next; //下一个节点 Object element; //元素数据 public Node(Node previous, Node next, Object element) { super(); this.previous = previous; this.next = next; this.element = element; } public Node(Object element) { super(); this.element = element; } }
LinkedList实现:
package Study.Collection; /** * <p>Description: </p> * 结点概念,add()方法 * @author zhangyan * @date 2018/12/19 21:24 */ public class YanLinkedList { private Node first; //第一个结点 private Node last; //最后一个结点 private int size; //容量 public void add(Object obj) { //新建一个node对象,调用Node Node node = new Node(obj); //第一次存东西,第一个结点和最后一个结点都是node if(first==null){ first = node; last = node; } else { node.previous = last; //最后一个结点赋值node的前继结点 node.next = null; //node的后继结点为null last.next = node; //指针移动 last = node; } } //重写toString()方法 public String toString() { //[a,b,c] first=a, last=c // //a,b,c StringBuilder sb = new StringBuilder("["); Node temp = first; while(temp!=null){ sb.append(temp.element+","); temp = temp.next; } sb.setCharAt(sb.length()-1, ']'); return sb.toString(); } //测试 public static void main(String[] args) { YanLinkedList list = new YanLinkedList(); list.add("a"); list.add("b"); list.add("c"); System.out.println(list); } }
解析:思路很简单,先定义节点,然后在YanLinkedList中调用。LinkedList中最核心的是add()方法。
add()方法的内容是新建一个node对象调用Node节点,首先判断头节点是否为空
1,头节点为空,把node对象赋值给YanLinkedList的第一个节点和最后一个节点;
2,头节点不为空,通过指针移动在YanLinkedList链表后添加节点node。
具体方法实现请看代码和注释
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。