Linkedlist模拟源码实现

目录结构:两个类,Node是链表节点的属性的方法。Link是多个节点来连接在一起的属性和方法。
在这里插入图片描述


在这里插入图片描述

Node:


package myLinklist;

public class Node {
  /**
   *因暂时无法获取node的地址信息,
   * 所以将前后索引位置直接存为前后节点
   */
  private Node pre;//这是一个节点
  private Object mate;//这是节点中存的数据
  private Node next;//这也是一个节点

  public Node getPre() {
    return pre;
  }

  public void setPre(Node pre) {
    this.pre = pre;
  }

  public Object getMate() {
    return mate;
  }

  public void setMate(Object mate) {
    this.mate = mate;
  }

  public Node getNext() {
    return next;
  }

  public void setNext(Node next) {
    this.next = next;
  }
}

**

Link:

**

package myLinklist;

public class Link {
 /**
   *用第一个节点和最后一个节点来追踪链表中的其他节点
   */
  private Node first;
  private Node last;
  int count;

  public void add(Object o) {

    if (first == null) {//判断是否是第一个节点
      Node node = new Node();
      node.setPre(null);
      node.setMate(o);
      node.setNext(null);
      first = node;//当前为添加的第一个节点时,那么first和last都为第一个节点
      last = node;
    } else {
      Node node = new Node();//不是第一个节点
      node.setPre(last);
      node.setMate(o);
      node.setNext(null);
      last.setNext(node);//如果当前添加的时第3个节点,那么此时last还是第2个节点,让第2个节点的后索引指向第3个节点。
      last = node;//将last指向新加入的节点,成为最后一个节点
    }
    count++;
  }

  public int size() {
    return count;
  }

  public Object mate(int index) {
    Node node = new Node();
    for (int i = 0; i < index; i++) {
      node = first.getNext();
    }
    return node.getMate();
  }

}

class Test {

  public static void main(String[] args) {
    Link link = new Link();
    link.add("a");
    link.add("b");
    System.out.println(link.size());
    System.out.println(link.mate(0));
  }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值