1. 程式人生 > >Java面試--面試中的資料結構問題

Java面試--面試中的資料結構問題

面試中的資料結構問題

資料結構分類:

列表 型---1.陣列  2.連結串列  3.佇列  4.棧

陣列【詳解】

開闢一片連續的空間,將元素依次放入其中;

陣列的好處:可以進行隨機訪問,只需要一個下標就可以訪問到該元素;但插入和刪除會比較耗費時間,插入和刪除操作都需要將之後的元素進行整體的移動,騰出空間來進行對應的操作。

連結串列【詳解】

每一個節點通過 next 值連結起來;查詢元素耗費時間O(n),需要一個計數器,從表頭開始順著 next 依次往後找,數到第 n 個就可以將第 n 個元素取出來;但插入和刪除不會耗費時間,插入操作只需要將插入前後的兩個整合打斷,再將插入的元素連線起來即可;刪除操作只要將要刪除的元素跳過即可,

佇列【詳解】

不支援隨機訪問,只支援 push 和 pop 操作,push 將元素放進去,pop 將元素拿出來,拿出的順序是先進先出

【詳解】

不支援隨機訪問,只支援 push 和 pop 操作,push 將元素放進去,pop 將元素拿出來,拿出的順序是先進後出

樹 型---1.二叉樹  2.搜尋樹  3.優先佇列

二叉樹 【詳解】

每個節點最多有兩個孩子節點,分為左孩子節點和右孩子節點;

二叉樹要點:

1.二叉樹具有唯一的根節點;

2.二叉樹中每個節點最多有兩個孩子,每個節點最多有一個父親節點;一個孩子也沒有的叫做葉子節點

3.二叉樹具有天然的遞迴結構【每個節點的左子樹也是二叉樹、每個節點的右子樹也是二叉樹】

搜尋樹【詳解】

1.二分搜尋樹是二叉樹

2.二分搜尋樹的每個節點的值:大於其左子樹的所有節點的值且小於其右子樹的所有節點的值

3.二分搜尋樹的每個子樹也是二分搜尋樹

4.儲存的元素必須具有可比較性【儲存自定義資料型別,必須自定義好資料的比較方式】

優先佇列【詳解】

普通佇列:先進先出,後進後出

優先佇列:出隊順序和入隊順序無關;和優先順序相關;

總結:

圖 型---1.無向圖 2.有向圖

無向圖

每個節點之間沒有方向,可以從 a--b ,也可以 b--a ,但每個邊有權重

有向圖

所有的邊都是單向的,只能從 a--b,b不能到 a,要讓 b 到 a 則必須再加一條邊

有向無環圖

可以描述任務之間的層級關係,

相關演算法:深度優先遍歷【能夠看到圖的每個節點】

廣度優先遍歷【走迷宮,識別聯通塊】

拓撲排序【有很多先後的依賴關係,先做哪一個】

最短路徑/最小生成樹