2011-01-14 70 views
2

我的朋友面對他們問他的IT公司的採訪他們給出了每個數據結構的實際例子這個數據結構如何用於計算機研究?計算機學習中數據結構的實例?

數據結構

  1. 堆棧
  2. 隊列,循環隊列
  3. 鏈表,雙向鏈表,循環鏈表
  4. 樹,二叉搜索樹
  5. 地圖 和其他人一樣搜索和排序

(例如在用於 維修器材進程隊列操作系統[用於隊列數據結構]像這樣 所有其他)

實施例相關的軟件實現 與計算機科學 ,操作系統等

希望積極響應

+0

所以,當你說「電腦學習」,你實際上意味着理論計算機科學幻想,或者軟件的實施?你的例子表明後者。 – 2011-01-14 19:55:34

+0

這是一個面試問題? – BoltClock 2011-01-14 20:00:52

+0

@djacobson編輯問題.. – 2011-01-14 20:01:23

回答

7

一些例子:

  1. 堆棧 - 撤消功能用此來 彈出最近的操作關閉 堆棧的頂部,然後第二最近等
  2. 隊列 - 進程調度通常 使用隊列(如何進程或線程 被訪問後 最初的工作雖然不同)
  3. 樹 - 目錄遍歷
  4. 二進制搜索 樹 - 快速搜索給定的 元素
  5. Graph - 存儲數據,以便您可以將其視爲繪製數據的數學「平面」。它可以有效地表示(可能)非常複雜的數據關係,因爲(如果您查看鏈接中的圖像)多個「鏈接」可以存在於兩個以上的數據之間,而不是鏈接列表,您只能有一個鏈接到你的左邊和你的右邊。
  6. 哈希映射 - 搜索某些內存塊(即使用多個指針時)當您在計算機上有地址簿時,就會發生哈希。它可能使用哈希映射,以便當您輸入John Smith時,他的電話號碼和其他信息可用。這是因爲當輸入「John Smith」時,哈希函數指向內存中的某個位置。每次你想訪問一些簡單的信息時,輸入一個內存地址都是一件頭痛的事情。
  7. 鏈表 - 單鏈表中的元素之間的一個方向提供運動,雙向鏈表提供來回運動元素之間,以及循環鏈表提供類似的對象(進程就是一個例子),當你想使用這個的通知導航能夠在元素之間導航,因爲每個元素都鏈接到下一個元素和之前的元素(對於循環,非圓形鏈接列表具有開始和結束)。想象一下你的網絡瀏覽器......你點擊「返回」轉到上一頁,然後點擊「轉發」轉到下一頁。您可以將其視爲線性鏈接列表。可以將照片幻燈片放映到下一張或上一張照片,然後最終從頭開始,可以將其視爲循環鏈接列表。 (它們不一定是這樣實現的,但它是將其可視化的好方法)

根據OP的要求進行編輯,以獲取關於最後結構的更多信息。

0

隊列通常用來保存一組數據在organi因爲它是一個FIFO(先入先出),所以在需要時可以立即訪問它。然而;當信息填入該隊列時,該隊列爲FULL其餘信息丟失。爲了解決這個問題,我們使用循環隊列,這會覆蓋其他元素,使得最近的數據是不是丟失。

這就像你提到的一個例子是計算機的資源隊列。由於計算機沒有無限的資源,因此必須使用隊列才能將資源分配給需要它的人員。例如,一個進程會請求一些資源,並將其放入隊列並被賦予一個優先級,根據這些信息,操作系統將決定需要多少資源以及將給出多少時間。爲了允許多個進程使用它,任何需要處理的進程都會在該隊列中放入一個請求。

一個鏈表有許多應用程序,它不可能將其簡化爲一個。例如,您可以通過鏈接列表中元素的節點隊列鏈接帳戶(對象)。在一個鏈表中,一個節點有一個前一個節點和一個下一個節點。它將所有元素有效地鏈接在一起,以便它們可以遍歷。取決於鏈接列表的風格,它允許前向遍歷,後向遍歷或兩個方向。有一點需要注意的是,鏈表的大小可以是動態的,因爲添加新音符需要做的只是將其附加到列表的末尾。然而;在性能方面,速度將是O(N),這意味着性能嚴重依賴於列表的大小。

我希望這會有所幫助。

0
  1. 堆棧 - 任何遞歸調用
  2. 隊列,循環隊列 - 所有的FIFO算法中使用這種
  3. 鏈表,雙向鏈表,循環鏈表 - 所有RDBMS
  4. 樹,二叉搜索樹 - 需要搜索的地方。記憶存儲在B +樹
  5. 圖 - 谷歌地圖