1 package com.gsh.test05; 2 3 /** 4 * 节点类 5 * @param <E> 6 */ 7 public class Node<E> { 8 private Node<E> pre; 9 private E element; 10 private Node<E> next; 11 12 public Node<E> getPre() { 13 return pre; 14 } 15 16 public void setPre(Node<E> pre) { 17 this.pre = pre; 18 } 19 20 public E getElement() { 21 return element; 22 } 23 24 public void setElement(E e) { 25 this.element = e; 26 } 27 28 public Node<E> getNext() { 29 return this.next; 30 } 31 32 public void setNext(Node<E> next) { 33 this.next = next; 34 } 35 36 @Override 37 public String toString() { 38 return "Node{" + 39 "pre=" + pre + 40 ", element=" + element + 41 ", next=" + next + 42 '}'; 43 } 44 45 }
1 package com.gsh.test05; 2 3 /** 4 * 构建一个模拟的双向链表 5 * @param <E> 6 */ 7 8 public class MyLinkedList<E> { 9 private Node<E> headNode; 10 private Node<E> tailNode; 11 private int count = 0; 12 13 public MyLinkedList() { 14 } 15 16 public void add(E e) { 17 //将添加的元素封装位一个对象 18 Node<E> n = new Node<>(); 19 n.setElement(e); 20 21 if (headNode == null) {//如果是第一个节点 22 n.setPre(null); 23 //将当前头节点指向该节点 24 headNode = n; 25 } else {//非第一个节点 26 n.setPre(tailNode); 27 n.getPre().setNext(n); 28 } 29 30 n.setNext(null); 31 //将当尾头节点指当前该节点 32 tailNode = n; 33 count++; 34 } 35 36 public int getSize(){ 37 return this.count; 38 } 39 40 public E getElement(int index){ 41 if(index<0||index>=count){ 42 throw new IndexOutOfBoundsException(); 43 } 44 Node<E> n = headNode; 45 for (int i = 0; i < index; i++) { 46 n=n.getNext(); 47 } 48 return n.getElement(); 49 } 50 public static void main(String[] args) { 51 MyLinkedList<String> intList = new MyLinkedList<>(); 52 intList.add("aa"); 53 intList.add("bb"); 54 intList.add("cc"); 55 intList.add("dd"); 56 intList.add("ee"); 57 intList.add("ff"); 58 String s = intList.getElement(6); 59 System.out.println(s); 60 } 61 }
标签:Node,pre,java,next,链表,add,双向,intList,public From: https://www.cnblogs.com/zhgsh/p/16719536.html