add方法报空指针异常
package exercise.LinearTable.impl;
import exercise.LinearTable.LinearList;
public class SingleList{
Node head = null;//表头
public boolean isEmpty() {
int length = size();
if(length==0) {
return true;
}
return false;
}
public int size() {
int length = 0;
Node temp = head;
while(temp.next!=null) {
length++;
temp = temp.next;
}
return length;
}
public Object get(int index) {
Node temp = head;
int i = 1;
if(index == 0) {
return head;
}
while(temp.next!=null) {
if(index==i) {
return temp;
}
temp = temp.next;
i++;
}
return temp;
}
public int add(Object element) {
int i=0;
if(head.next==null) {
head.next = (Node) element;
return i;
}
//新建一个节点
Node newnode = new Node(element);
Node temp = head; //一个移动的指针(把头结点看做一个指向结点的指针)
while(temp.next != null){ //遍历单链表,直到遍历到最后一个则跳出循环。
temp = temp.next; //往后移一个结点,指向下一个结点。
}
temp.next = (Node) element; //temp为最后一个结点或者是头结点,将其next指向新结点
i++;
//链表为空
return i;
}
public void insert(int index, Node element) {
//首先需要判断指定位置是否合法,
if(index<1||index>size()){
System.out.println("插入位置不合法。");
return;
}
Node temp = (Node) get(index);
element.next = temp.next;
temp.next = element;
}
@Override
public Object remove(int index) {
//判断index是否合理
if(index<1 || index>size()){
System.out.println("给定的位置不合理");
return null;
}
Node temp = (Node) get(index-1);
temp = temp.next.next;
return temp;
}
public void tostring() {
Node temp = head;
while(temp.next!=null) {
System.out.print(" "+temp.data);
temp = temp.next;
}
}
public static void main(String[] args) {
SingleList s = new SingleList();
s.add("1");
s.add("1");
s.add("1");
s.add("1");
s.tostring();
}
}
class Node{
Node next = null;
Object data;
public Node(Object data) {
this.data = data;
}
}