1. 程式人生 > >Java 實現簡答的單鏈表的功能

Java 實現簡答的單鏈表的功能

rgs isempty ava pan new mov java bool oid

作者:林子木 博客網址:http://blog.csdn.net/wolinxuebin

參考網址:http://blog.csdn.net/sunsaigang/article/details/5751780


描寫敘述:使用java實現簡答的單鏈表的功能

定義了一個MyList類

包括的函數:

getHead()返回頭指針。

isEmpty() 推斷是否為空;

addFirst(T element)在鏈表的頭部增加元素。

addLast(T element)在鏈表的尾部增加元。

add(T fix,T element)在指定元素fix後插入新的元素

remove(T element) 刪除指定元素

contains(T element)查看是否包括某元素

printList()打印鏈表

其它:

使用泛型


程序代碼例如以下:

public class MyList<T>{ //使用泛型  
    /*
    *  定義節點類Node
    */
    private static class Node<T>{ 
        T element;
        Node<T> next;
        Node(T element,Node<T> next){   //構造函數
            this.element = element;
            this.next = next;
        }
        Node(T element){                //構造函數
            this(element,null);  //調用上面的構造函數
        }
    }

    //定義MyList成員
    private Node<T> head;      //定義頭結點

    /*
    *構造函數
    */
    MyList(){
        head = null;
    }
    /*
    *返回頭指針
    */
    public Node<T> getHead(){
        return head; 
    }
    /*
    *查看鏈表是否為空
    */
    public boolean isEmpty(){
        return null == head; //推斷是否為空
    }
    
    /*
    *將元素增加鏈表頭
    */
    public void addFirst(T element){
        if(isEmpty()) head = new Node<T>(element);
        else   head = new Node<T>(element,head);   
    }
     /*
    *將元素增加鏈表尾
    */
    public void addLast(T element){
         if(isEmpty()) head = new Node<T>(element);//假設為空
         else {
            Node<T> node = head;        //不為空,就使用查找,知道表尾
            while(node.next != null) node = node.next;  
            node.next = new Node<T>(element);  
         }
    }
    /*
    *在指定元素後增加新元素
    */
    public boolean add(T fix,T element){
        if(isEmpty()) return false;
        else {
           Node<T> node = head;        //定義中間變量
           while(node.element != fix && null != node.next){//程序跳出條件為1、到表尾 2、找到這個元素
                node = node.next;  //查找是否含有元素
           } 
           //這裏採用直接使用while查找,而推斷在while外面。能夠加高速度
           if(node.element == fix){ //這裏首先推斷是否找到元素
               node.next = new Node<T>(element,node.next) ;//將element插入。並將element的next指向下一個元素
               return true;
           }
           else
               return false;
        }
    }
    /*
    *刪除指定元素
    */
    public boolean remove(T element){
        if(isEmpty()) return false;
           Node<T> node = head;        //定義變量pre 和 node
           Node<T> pre = null;
           while(node.element != element && null != node.next){ //程序跳出條件為1、到表尾 2、找到這個元素
                pre = node;        //保存前面的變量
                node = node.next;  //指向下一個元素
           } 
           if(node.element == element){
             if(null == pre)    //假設是指定元素是第一個元素
                head = head.next;
             else   
                pre.next = node.next;
         return true;
           }
           else
               return false;
    }
    /*
    *查看是否包括某元素
    */
    public boolean contains(T element){
        if(isEmpty()) return false;
        else {
           Node<T> node = head;       
           while(node.element != element && null != node.next)//程序跳出條件為1、到表尾 2、找到這個元素 
                node = node.next;  //不斷指向下一個程序
           if(node.element == element)
               return true;
           else
               return false;
        }
    }
    /*
    *打印鏈表
    */
    public void printList(){
        if(isEmpty()){
            System.out.println("null");
        }
        else{
            for(Node<T> node=head; node!=null;node=node.next)
                System.out.print(node.element +" ");
            System.out.println();       //打印回車
        }
    }
  
    public static void main(String[] args) {
        MyList<Integer> list = new MyList<Integer>();//若不加<Integer>便是為指定參數類型,將會警告
                                            //使用了未經檢查或不安全的操作。
                                            //有關具體信息, 請使用 -Xlint:unchecked 又一次編譯。
        for(int i=0; i<10; i++){
            list.addFirst(i);
        }
        list.printList();   //打印
        list.remove(0);     //刪除
        list.printList();   //打印
        list.addLast(0);    //在尾部增加
        list.printList();   //打印

        list.add(7,-7);     //在7之後插入-7
        list.printList();   //打印

        if(list.contains(-7))
            System.out.println("is in the list !");
        else
            System.out.println("is not in the list !");
    }
}


Java 實現簡答的單鏈表的功能