單鏈表實現-HashMap鋪墊

單鏈表

你知道單鏈表長什麼樣子嗎?嘿嘿,說起來感覺超級簡單,但是寫起來考慮的就多嘍
在這裏插入圖片描述

代碼

package NodeDemo;

/**
 * @param
 * @Author: judy
 * @Description:
 * @Date: Created in 20:02 2019/1/18
 */
public class Link {
    //初始化head爲空
    Node head=null;

     /**
     * 創建頭結點
     * @param data 數據
     */
    public void create(String data){
        //判斷頭肩點是否爲空
        Node node = new Node(data);
        if (head == null) {
            head = node;
            return;
        }
        Node nodeNext= head;
        //說明不是最後一個,得到最後一個這樣可以賦值node
        while (nodeNext.next != null){
            nodeNext = nodeNext.next;
        }
        //得到最後的一個地址指向節點
         nodeNext.next = node;
    }

    /***     *
     *
     * @param index 刪除的節點的地址
     */
    public boolean deleteNode(int index){
        //1判斷是否有節點
           //1.1節點長度左右邊境
        //2刪除是否爲頭結點
        //3刪除指定爲節點
        if(index<0 || lengthNode()<0){
            //不符合條件
            return false;
        }
        if(index==1){
            //刪除頭節點
            head=null;
            return true;
        }
        if(index>1){
            //1得到當前節點
            //2得到前一個節點
            //3得到後一個節點
           Node lastNode= head;

           //得到前一個節點,需要判斷index
            Node findPreNode = head;
            int i=1;
            while (findPreNode.next!=null){
                if(index==i){
                 //找到要刪除節點的後節點點
                    lastNode.next = findPreNode.next;
                    return true;
                 //找到刪除節點後節點
                }else {
                    i++;
                    lastNode = findPreNode;  //前
                    findPreNode = findPreNode.next; //後
                }
            }
        }
        return true;
    }

    /**
     *
     * @return 鏈表長度
     */
    public int lengthNode(){
        //創建一個新的節點,爲了下面循環節點
        Node node = head;
        int length = 0;
        //如果節點
        while (node.next != null){
            length ++;
            node=node.next;
        }
        return length;
    }

    //打印
    public void printNode(){
        Node nowNode= head;
        while (nowNode.next!=null){
            System.out.println(nowNode.data+",");
            nowNode= nowNode.next;
        }
    }
    public static void main(String[] args){
        Link link = new Link();
        link.create("9");
        link.create("8");
        link.create("7");
        link.create("6");
        link.create("5");
        link.printNode();
        System.out.println("---------------------");
        link.deleteNode(2);
        link.printNode();
    }
}

結果:9,
8,
7,
6,


9,
7,
6,

思路

先說一下思路把
1判斷是否有節點
2判斷頭結點是否有數據
3插入頭節點
4如果頭結點不爲空則先下一次插入數據
5刪除節點
6獲取節點長度
8得到要刪除接地位置,然後node.next的時候一次判斷是否相等,如果相等則刪除

總結

單鏈表簡單的實現了嘍.謝謝靖峯同學~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章