JAVA的链表实现 (一)

2014-11-24 07:45:48 · 作者: · 浏览: 1

其实很早就想开始在CSDN写博客了,但是苦于时间或者是懒,一直没有动手,想了想,最后还是开始吧,第一篇博客,开始我的CSDN之旅。

java动态链表奉上
[java]
package com.bird.node;

public class IntSLLNode {
public int info;
public IntSLLNode next;

public IntSLLNode (int i){
this(i,null);
}

public IntSLLNode(int i, IntSLLNode n){
info = i;
next = n;
}

}
package com.bird.node;

public class IntSLLNode {
public int info;
public IntSLLNode next;

public IntSLLNode (int i){
this(i,null);
}

public IntSLLNode(int i, IntSLLNode n){
info = i;
next = n;
}

}

[java]
package com.bird.node;

public class IntSLLList {
protected IntSLLNode head, tail;

public IntSLLList(){
head = tail = null;
}

public boolean isEmpty(){
return null == head;
}

public void addToHead(int el){
head = new IntSLLNode(el,head);
if(tail == null){
tail = head;
}
}

public void addToTail(int el){
if(!isEmpty()){
tail.next = new IntSLLNode(el);
tail = tail.next;
}
else{
head = tail = new IntSLLNode(el);
}
}

public int deleteFormHead(){
int el = head.info;
if(head == tail){
head = tail = null;
}else{
head = head.next;
}
return el;
}

public int deleteFormTail(){
int el = tail.info;
if(head == tail){
head = tail = null;
}else{
IntSLLNode tmp;
for(tmp = head; tmp.next != tail; tmp = tmp.next);
tail = tmp;
tail.next = null;
}
return el;
}

public void printALL(){
for(IntSLLNode tmp = head; tmp != null; tmp = tmp.next)
System.out.println(tmp.info + "");
}


public boolean isIntList(int el){
IntSLLNode tmp;
for(tmp = head; tmp != null && tmp.info != el; tmp = tmp.next);
return tmp != null;
}


public void delete(int el){
if(!isEmpty()){
if(head == tail && el == head.info){
head = tail = null;
}
else if(el == head.info)
head = head.next;
else{
IntSLLNode pred, tmp;
for(pred = head, tmp = head.next; tmp != null && tmp.info != el; pred = pred.next, tmp = tmp.next);
if(tmp != null){
pred.next = tmp.next;
if(tmp == tail){
tail = pred;
}
}
}
}
}


public static void main(String [] args){
IntSLLList list = new IntSLLList();
System.out.println(list.isEmpty());
list.addToHead(6);
list.addToTail(14);
list.printALL();
list.deleteFormHead();
list.isIntList(6);
list.addToHead(15);
list.printALL();
list.delete(15);
list.printALL();
}
}
package com.bird.node;

public class IntSLLList {
protected IntSLLNode head, tail;

public IntSLLList(){
head = tail = null;
}

public boolean isEmpty(){
return null == head;
}

public void addToHead(int el){
head = new IntSLLNode(el,head);
if(tail == null){
tail = head;
}
}

public void addToTail(int