天天看點

資料結構是什麼?

數組:

數組是什麼? 數組是存儲一系列同一類型資料的容器。

在Java中,數組可以分為一維數組,多元數組;根據存儲内容又可以分為基本類型數組與引用類型數組;

資料結構是什麼?
資料結構是什麼?

看上面兩張圖,得到如下結論:

1、Java中的二維數組乃至多元數組本質上還是一維數組;

2、Java中基本類型直接存儲在堆記憶體中,但是引用類型存儲的是記憶體位址;

關聯數組:

關聯數組與普通數組不同的是,key值可以是整數也可以是字元串,一般可以稱為hash表;

var arr=new Array();
arr["china"]="beijing,niaoling,hulan";
arr["usa"]="newyork,washington,atlanta";
arr["japan"]="tokyo";
alert(arr["china"]);
alert(arr["japan"]);

alert(arr[0]);
           

連結清單:

連結清單是資料帶有指針的一組資料結構,可以分為單項連結清單,雙向連結清單,循環連結清單(如下圖)

資料結構是什麼?
資料結構是什麼?
資料結構是什麼?

這裡有道反向連結清單的題:

反轉前:

資料結構是什麼?

反轉後:

資料結構是什麼?

可以參考如下代碼(采用了遞歸):

private ListNode reverse(ListNode head){
        // 遞歸到底的退出條件
        if (head.next == null) {
            return head;
        }

        // 不能用newHead的next指向目前節點,因為newHead始終沒有動
        ListNode newHead = reverse(head.next);
        head.next.next = head;//連結清單循環
        head.next = null;
        return newHead;
    }
           

集合:

集合在底層的實作可能是數組,也可能是連結清單,也可能是其他資料結構,其與普通數組不同的是集合的長度可以變化;

隊列:

隊列是一種先進先出(First in First Out)的線性表,簡稱FIFO。

資料結構是什麼?

其隊列可以分為順序隊列(底層可以使用數組實作),鍊隊列(底層可以采用連結清單實作,長度不受限制)

棧:

先進後出;

資料結構是什麼?

跳表:

資料結構是什麼?

索引與反向索引:

索引:

資料結構是什麼?

反向索引:

資料結構是什麼?

BitSet:

bitset是一個布爾數組,每一位隻存儲一個值,0或者1;

繼續閱讀