© JLStock/Shutterstock.com
大多數人將數據稱為計算機信息,無論是傳輸還是存儲。但是,一張紙上的數字或文本、電子存儲設備中的位和字節,或者人類頭腦中的事實也可以歸類為數據。數據結構是指事實和數字的集合,一組值或引用項目精確組合的不同格式的值。
什麼是數據結構:精確定義
數據結構是一種存儲、組織、處理和檢索數據的專業方式。有不同類型的結構旨在為不同的目的安排數據。這使用戶可以輕鬆訪問所需的數據。
A數據結構以一種機器和人類都容易理解的方式組織信息。在計算機科學和編程中,數據結構被設計為與特定算法一起使用。每個結構都包含有關數據值、數據關係以及可應用於數據的函數的信息。
數據結構的類型和示例
在我們的日常生活中,數據結構以不同的方式用於解決數學和邏輯問題。使用數據結構,可以在相對較短的時間內組織和操作大量數據。有兩種主要類型的數據結構:原始數據結構和非原始數據結構。
原始數據結構
這些類型的數據結構直接按照機器的指示進行操作。它們僅包含一個值,由諸如 float、int、pointers 和 double 等數據類型組成。
Non-Primitive
這些是複雜類型的數據結構,源自原始的。它們分為線性和非線性數據結構。
線性數據結構
組織良好的數據結構是設計高效算法的關鍵。
©ArtHead/Shutterstock.com
在線性數據中結構,數據以線性或順序排列,其中當前元素始終附加到其上一個和下一個元素。線性數據結構可以是靜態的,其中數據具有固定的內存大小,便於訪問元素,也可以是動態的,其中內存大小不固定,允許隨機更新數據。
線性數據結構由以下部分組成:
數組
這是一種線性數據結構,其中的項目被收集並存儲在相鄰的內存位置。主要思想是將所有相同的數據類型放在一個地方。這允許在很短的時間內處理大量數據。
數組具有不同的操作,例如搜索、插入、排序和刪除等。以下是在數組中完成的操作:
Traverse – 在打印元素之前遍曆元素。搜索 – 對數組中的元素進行深入挖掘。可以通過索引或值搜索元素。更新 – 使給定索引中的現有元素保持最新。
無法在數組中插入和刪除元素,因為所有元素的大小都是固定的。如果要插入或刪除一個元素,則需要創建一個新數組並增加大小。
數組的應用用於解決矩陣問題數據庫記錄的實現用於調度CPU用於計算機中的查找表用於處理一個演講數組多維數組用於顯示計算機屏幕用於管理系統,如圖書館、學生門戶和議會將圖像保存在不同的維度鍊錶
這是一種線性數據結構,其中元素不存儲在連續的內存中位置。這裡的所有元素都使用引用或指針鏈接。鍊錶分為單鍊錶、雙向鍊錶、循環鍊錶和雙向循環鍊錶。此數據結構使用額外的內存來存儲鏈接。
單鍊錶 列表 – 項目只能在正向遍歷。雙向鍊錶——項目可以在向後和向前的方向上遍歷。節點有一個額外的指針 稱為 PREV,它指向前一個節點。循環鍊錶 – PREV 指針指向尾部,next 指針指向頭部節點。鍊錶操作 搜索 – 使用線性搜索從分配的鍊錶中查找包含特定鍵的第一個元素。插入 – 將鍵引入鍊錶。這可以在列表的開頭、結尾或中間完成。 Delete – 從指定列表中刪除特定元素。刪除只能分三步進行:從列表的開頭、結尾和中間刪除。用於循環調度以跟踪多人遊戲輪次的應用程序它們存儲以前訪問過的網頁顯示社交媒體提要堆棧
這是一個線性數據結構,其中執行每個操作都有特定的順序。順序是“後進先出”。在這裡,只能從一端輸入和檢索數據,這稱為推入式操作。在堆棧下執行的操作包括遞歸、排序、刪除等等。
堆棧操作 Push – 這是在堆棧頂部插入一個元素。Pop – 刪除最頂層的元素然後返回。Peek – 返回頂部的元素而不刪除它。isEmpty – 確認堆棧為空。isFull – 檢查堆棧是否已滿。應用程序 手機上的通話記錄使用堆棧數據結構瀏覽器使用堆棧來保存每個以前訪問過的站點的列表用於內存管理將中綴表達式轉換為後綴表達式用於媒體播放器播放下一首歌曲隊列
這是一個線性數據結構,使用以“先進先出”的特定順序執行其操作。首先排序的所有數據都將首先可訪問,並且輸入和檢索數據是從多個端完成的。
一個很好的例子是特定消費者的隊列;先來的人總是先得到服務。要在此處訪問文件,您必須刪除之前添加的所有文件。
隊列中的操作 Enqueue – 添加一個位於隊列末尾的元素Dequeue – 刪除一個位於隊列開頭的元素
非線性數據結構
這是第二種非原始數據結構,其中數據元素不是順序的。在這裡,很難一次瀏覽所有元素。它們包括以下內容:
樹 在數據樹中,每個孩子都可以被視為其子樹的根節點,這使得遞歸成為樹遍歷的一種有用技術。
©Song_about_summer/Shutterstock.com
這是一種非線性數據結構,其中元素以樹狀結構排列,頂部節點稱為根節點。每個節點包含各種未排序的數據。
它由中心節點、結構節點和子節點組成。這些節點使用邊連接。二叉樹、二叉搜索樹、AVL 樹和 B 樹是類樹的不同類型。
二叉搜索樹的屬性 Key – 存儲在節點中的值Left – 指向左子節點的指針Right – 指向右子節點的指針P – 指向母節點的指針應用程序有助於遊戲開發索引數據庫域名ServerSocial networking sites 圖
這是一種具有頂點和邊的非線性數據結構。它具有有限數量的連接節點的頂點和邊。這種數據結構主要用於解決複雜且具有挑戰性的編程問題。偏心率最小的頂點被視為圖形的中心。
有向圖 – 當所有邊的方向指示起始和結束頂點時。
無向圖 – 所有的邊都沒有特定的方向。未連接到圖中任何事物的邊被認為是孤立的。
應用程序 用於呈現計算流程用於建模圖形用於表示網頁和搜索引擎的 Google 鏈接資源分配圖用於操作系統社交網絡,其中用戶是節點,網絡內的友誼成為邊緣哈希表
這是一種數據結構,存儲具有相同鍵關聯的值。由於鍵之間的關係,查找很有效。由於這個事實,它在搜索和插入方面是高效的,而不考慮數據的大小。
哈希表有一個函數hash function(h)就是用來克服上述問題的。
哈希表的應用數據庫索引的實現關聯數組集合數據結構的實現
How to選擇數據結構
數據結構的選擇取決於應用程序或正在開發的軟件的操作和復雜性。不同的數據結構提供不同的解決方案,因此選擇最方便的數據結構和工程師是明智的。
Operations
最重要的是了解你希望數據結構執行什麼操作,比如檢索、刪除、更新、插入和遍歷。會經常執行什麼操作?什麼操作根本不會用到?
這些類型的問題有助於確定數據結構是否滿足您的所有需求以及您是否可以組合多種結構來滿足您的所有需求,以及確認這些結構在使用時會變快還是變慢.
複雜性
這裡的問題是當數據結構很大時,哪種數據結構最有用和最有效。一個好的數據結構應該能夠處理任何大小的結構或數據。
內存控制
靜態內存數據結構在安裝時佔用固定數量的內存並限制數量要添加的數據。另一方面,動態數據結構賦予用戶在程序使用時分配、釋放和重新分配內存的權限。但是,Python 和 JavaScript 等程序會為用戶分配數據,而不管所使用的結構類型如何。
數據結構的使用
下面看數據結構的應用
數據實現
實施結構意味著構建一種邏輯方式來解釋或排序相關數據以便正確訪問.
©ioanna_alexa/Shutterstock.com
數據結構主要用於抽像數據以物理形式的實現。這使它們成為創建和運行有效軟件的重要組成部分。它們還有助於算法設計。幾種早期的編程語言,如 C 和 C++,使程序員能夠描述他們的數據結構。
數據存儲
軟件工程師正在使用與他們所需的數據結構類型完全耦合的算法,例如列表和隊列。數據結構也用於存儲數據。它們指定了特徵集合和用於在數據庫系統中存儲記錄的結構。
他們還管理資源和服務。操作系統的資源和服務是通過使用數據結構來啟用的,例如內存分配的鍊錶。
對數據進行排序和排序
數據結構用於對數據進行排序和排序。諸如二叉搜索樹之類的數據結構提供了一種對用作標籤的數據進行排序的有效方法。最後,大數據應用程序和軟件使用數據結構來分配和管理存儲在不同數據站點中的數據,確保具有最大的可擴展性和性能。
數據結構的重要性
它有助於有效的數據管理。深思熟慮和明智的數據結構選擇可以提高算法或計算機程序的性能,使其更有用。
處理複雜性
計算機編程的增加和數據使用的增加會影響某些應用程序的執行並降低處理速度、搜索數據和處理多個請求。為了應對這種威脅,數據結構被用來幫助計算機更有效地運行。
內存的系統使用
優化發生在數據結構內存時。例如,當不確定數據大小時可以使用鍊錶和數組。數據在不再使用時也可以被清除。
重用能力
一旦啟動了特定的數據結構,它就可以在任何離散位置重新使用。這些實現可以放入允許不同客戶端使用它們的庫中。
抽象
數據結構是抽像數據類型的基礎。在抽像數據類型中,操作應該是可以理解的。
為要處理的數據選擇最合適的數據結構很重要。不合適的數據結構會導致程序運行緩慢或代碼無響應。在選擇正確的數據結構之前,請考慮以下問題:
那裡將存儲什麼類型的信息?存儲的信息將如何使用?數據在設計或創建後應該保存在哪裡?是有更好的方法來組織數據嗎?
數據類型
如果數據結構是構建計算機程序基礎的模塊,那麼數據類型就是構建數據結構的模塊。不同類型的數據包括:
布爾值 – 這是用於存儲真或假的邏輯值。整數 – 它們的大小各不相同,並且包含一個廣泛的價值。例如,一個 8 位整數包含 128 到 127 之間的值。浮點數 – 它們存儲公式中實數的表示。指針 – 這些是參考引用其他值的點。String – 這表示一個字符數組,後面跟著一個停止代碼,通常是“0”值。
數據結構的實際應用
在電視上看東西時,顯示的是一個多維數組。在線考試中不能跳過數字的問題編號是數組的應用。排列數字圖書館管理系統中的書名是數組的應用。用於圖像查看器,其中上一張和下一張圖像通過上一張和下一張按鈕鏈接。在音樂播放列表中,當前正在播放的歌曲鏈接到上一張和下一張下一個。一堆盤子使用堆棧。Microsoft Word 中的重做和撤消按鈕是堆棧的應用。在裁員時,公司使用最後僱用、最先解僱的標準。這些是棧。訪問過的網頁的瀏覽器歷史是使用棧的一個例子。打印機、洗車和婚禮電子郵件使用隊列結構。科學計算和頁面排名使用圖形結構。
結論
數據的組織方式稱為數據結構。該結構還允許用戶以指定方式與數據進行交互。選擇正確的數據結構取決於程序和正在使用的算法。做出正確的數據結構選擇對每個軟件工程師來說都非常重要。
什麼是數據結構,它是如何工作的? FAQ(常見問題)
什麼是數據結構,為什麼它們很重要?
數據結構是一種組織和存儲數據的方式計算機程序,以便可以有效地訪問和操作它。它們很重要,因為它們允許更快、更有效的數據處理,這對許多應用程序來說都是必不可少的。
最常用的數據結構是什麼?
一些最常用的數據結構包括數組、鍊錶、棧、隊列、樹和圖。這些數據結構中的每一個都有自己的優點和缺點,適用於不同類型的數據和應用程序。
數據結構與算法有何不同?
雖然數據結構與數據的組織和存儲方式有關,但算法與數據的處理和操作方式有關。換句話說,數據結構為算法提供了運行的基礎。
數據結構運行的時間複雜度是多少?
時間複雜度數據結構操作的時間是指執行該操作需要多少時間。這很重要,因為它允許我們評估不同數據結構和算法的效率,並為特定任務選擇最佳的。
數據結構與內存管理有何關係?
數據結構與內存管理密切相關,因為它們決定了數據在內存中的存儲方式。高效的內存管理對於良好的性能至關重要,選擇正確的數據結構有助於最大限度地減少內存使用並優化程序速度。