引言:对于链表数据结构来说:基本的单元是节点Node
对于单向链表来说,任何一个节点Node都有两个属性
第一:储存的数据 第二:下一个节点的内存地址
1.节点
public class Node { //储存数据 Object object; //下一个节点 Node next; public Node(){ } public Node(Object object, Node next) { this.object = object; this.next = next; } }
2.链表
public class link { //头结点 private Node header = null; private int size = 0; public int getSize(){ return size; } //想链表中添加元素的方法 public void add(Object obj){ //创建一个新的节点对象 //让之前单链表的末节点next指向新节点对象 //有可能为空,有可能有一个,两个 if(header == null){ //说明没有节点 //new一个新节点作为头结点,这个时候的头结点既是一个头结点,又是一个末尾结点 header = new Node(obj,null); }else { //说明头不是空,头结点已经有了 //找到当前末尾结点,让当前末尾节点的next是新节点 Node currentLastNode = findLast(header); currentLastNode.next = new Node(obj,null); } size++; } //删除链表某个数据的方法 public void remove(Object obj){ } //修改链表某个数据的方法 public void modify(Object obj){ } //查找链表中某个元素的方法 public void find(Object obj){ } //专门查找最后一个节点 private static Node findLast(Node node){ if(node.next ==null){ //如果一个节点的next是null说明就是尾结点 return node; } //递归算法找到最后一个节点 return findLast(node.next); } }
3.测试
public class linkedListDemo01 { public static void main(String[] args) { link link = new link(); link.add("abc"); link.add("efg"); link.add("123"); System.out.println(link.getSize()); } }
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)