1.add方法
public class Node {
Node previous;//上一个节点
Node next;//下一个节点
Object elements;//元素数据
public Node(Node previous, Node last, Object elements) {
this.previous = previous;
this.next = next;
this.elements = elements;
}
public Node(Object elements) {
this.elements = elements;
}
}
public class SxtLinkedList01 {
private Node first;//第一个节点
private Node last;//最后一个节点
private int size;//节点数
//[]
//["a","b","c"]
public void add(Object obj){
Node node=new Node(obj);
if(first==null){
first=node;
last=node;
}else{
node.previous=last;
node.next=null;
last.next=node;
last=node;
}
}
//重写 toString 方法
public String toString() {
StringBuilder sb=new StringBuilder("[");
Node temp =first;
while(temp!=null){
sb.append(temp.elements+",");
temp=temp.next;
}
sb.setCharAt(sb.length()-1,']');
return sb.toString();
}
public static void main(String[] args) {
SxtLinkedList01 list= new SxtLinkedList01();
list.add("a");
list.add("b");
list.add("c");
System.out.println(list);
}
}
[a,b,c]
2.get方法
public class SxtLinkedList01 {
private Node first;//第一个节点
private Node last;//最后一个节点
private int size;//节点数
public Object get(int index){
if(index<0||index>size-1){
throw new RuntimeException("索引数字不合法:"+index);
}
Node temp=null;
if(index<=(size>>1)){//如果get的索引值小于size的一半,从前往后遍历到一半
temp=first;
for(int i=0;i<index;i++){
temp=temp.next;
}
}else{//从后往前遍历到一半
temp=last;
for(int i=size-1;i>index;i--){
temp=temp.previous;
}
}
return temp.elements;
}
//[]
//["a","b","c"]
public void add(Object obj){
Node node=new Node(obj);
if(first==null){
first=node;
last=node;
}else{
node.previous=last;