1、Node节点类
//链表单元
class Node {
//一个节点包含最基本的三个参数
Node previous; //前一个节点
Node next; //下一个节点
Object element;//当前节点保存的数据
public Node(Node previous, Node next, Object element) {
this.previous = previous;
this.next = next;
this.element = element;
}
public Node(Object element) {
this.element = element;
}
public Node() {
}
}
2、MyLinkedList类
//链表部分
class MyLinkedList {
public Node first;
public Node last;
//返回链表长度
public int size;
public int lenth(){
return size;
}
//["a","b"]
//链表新增节点
public void add(Object obj){
Node node = new Node(obj);
size++;
if (first == null) {
first = node;
last = node;
}else {
node.previous = last;
node.next = null;
last.next = node;
last = node;
}
}
public String toString(){
Node temp = first;
StringBuilder sb = new StringBuilder("[");
while (temp != null){
sb.append(temp.element + ",");
temp = temp.next;
//System.out.print(first.element);
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
//[a,b,c,d,e] get方法
public String get(int index){
Node temp = first;
if (index >= 0 && index <= size -1) {
for (int i = 0; i < index; i++) {
temp = temp.next;
}
return (String) temp.element;
}else {
return "下标越界";
}
}
}
在这里面可以增加增删查改各种方法,后续会陆续补充
3、Test类
public static void main(String[] args) {
MyLinkedList ls =new MyLinkedList();
ls.add("a");
ls.add("b");
ls.add("c");
ls.add("链表最后一个是我");
ls.add(3344);
System.out.println(ls.toString());
System.out.println(ls.lenth());
System.out.println(ls.get(3));
}
}