单链表的概念参照这个完全可以理解http://baike.baidu.com/link?url=-1uzZ37pcZwpN-1Zy2lCassJ2YqPQzjIPbQHdPXCwo0pGR5-sXiEY8kXNUjt2DubG_8JTSQBJrhTF182Kwo5Wq
下面是我的程序:
新建一个名为Node的类,data是数据域,而next是指针域
package singleLinkedList;
/**
* Created by lzh on 2/29/16.
*/
public class Node {
public Node next;
public Object data;
// public Node(){}
public Node(Object data){
this.data = data;
}
}
在写一个 类
package singleLinkedList;
/**
* Created by lzh on 2/29/16.
*/
public class SingleLinkedList extends RuntimeException{
private Node first;
private int length;
public SingleLinkedList(){
init();
}
/**
* initialize SingleLinkedList
*/
private void init(){
this.first = null;
}
/**
*
* @param data insert data
* @param locate insert location
*/
public void insert(Object data,int locate){
if(locate < 0){
throw new RuntimeException("please input valid locate");
}else if(locate == 0){
insert(data);
}else {
add(data,locate);
}
}
private void add(Object data,int locate){
Node newNode = new Node(data);
Node curr = first;
int currLocate = 1;
while(curr.next != null){
if(currLocate == locate){
newNode.next = curr.next;
curr.next = newNode;
length++;
currLocate++;
}else{
curr = curr.next;
currLocate++;
}
}
if(currLocate == locate){
curr.next = newNode;
length++;
currLocate++;
}else if(currLocate< locate){
throw new RuntimeException("locate is out if size");
}
}
/**
*
* @param data insert data,default insert into first location of the SingleLinkList
*/
public void insert(Object data){
Node insert = new Node(data);
insert.next = first;
first = insert;
length++;
}
/**
*
* @param data remove data of the SingleLinkedList
* @return remove data
*/
public Object remove(Object data){
Node curr = first;
boolean flag = false;
if((curr.data).equals(data)){
first = curr.next;
length--;
flag = true;
}
while(curr.next != null){
if((curr.next.data).equals(data)){
if(curr.next.next != null){
curr.next = curr.next.next;
length--;
}else{
curr.next = null;
}
flag = true;
}
curr = curr.next;
}
return flag;
}
/**
*
* @param data find data in the SingleLinkedList
* @return
*/
public boolean find(Object data){
Node curr = first;
while(curr != null){
if((curr.data).equals(data)){
return true;
}else{
curr = curr.next;
}
}
return false;
}
/**
*
* @return the length of the SingleLinkedList
*/
public int size(){
return length;
}
public void listAll(){
Node curr = first;
if(curr == null){
System.out.println("this SingleLinkedList is empty");
}else{
while(curr != null){
System.out.println(curr.data);
curr = curr.next;
}
}
}
public boolean isEmpty(){
if(first == null){
return true;
}else {
return false;
}
}
}