灯火互联
管理员
管理员
  • 注册日期2011-07-27
  • 发帖数41778
  • QQ
  • 火币41290枚
  • 粉丝1086
  • 关注100
  • 终身成就奖
  • 最爱沙发
  • 忠实会员
  • 灌水天才奖
  • 贴图大师奖
  • 原创先锋奖
  • 特殊贡献奖
  • 宣传大使奖
  • 优秀斑竹奖
  • 社区明星
阅读:2647回复:0

JAVA的链表实现

楼主#
更多 发布于:2012-09-08 09:41

其实很早就想开始在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 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();
}
}


实现了最基本的功能,没有写注释,主要是希望自己好好看看,呵呵




喜欢0 评分0
游客

返回顶部